首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC-4改变服务器端的ViewBag.Message?

MVC-4改变服务器端的ViewBag.Message?
EN

Stack Overflow用户
提问于 2013-05-15 17:19:07
回答 1查看 12.3K关注 0票数 1

我是MVC编程的初学者。

当应用程序启动时,ViewBag.Message是:选择要上传的文件。

上传成功后,更改为:文件上传成功!

有没有办法让它在大约5秒后返回并再次显示“选择要上传的文件”消息,而不使用任何javascript?我想,如果mvc有一些内置的时间函数,我可能会用到?

https://github.com/xoxotw/mvc_fileUploader

我的观点是:

代码语言:javascript
复制
@{
    ViewBag.Title = "FileUpload";
}

<h2>FileUpload</h2>

<h3>Upload a File:</h3>


    @using (Html.BeginForm("FileUpload", "Home", FormMethod.Post, new {enctype = "multipart/form-data"}))
    { 
        @Html.ValidationSummary();
        <input type="file" name="fileToUpload" /><br />
        <input type="submit" name="Submit" value="upload" />  
        @ViewBag.Message
    }

我的控制器:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Mvc_fileUploader.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Message = "Choose a file to upload!";
            return View("FileUpload");
        }

        [HttpPost]
        public ActionResult FileUpload(HttpPostedFileBase fileToUpload)
        {

            if (ModelState.IsValid)
            {
                if (fileToUpload != null && fileToUpload.ContentLength > (1024 * 1024 * 1))  // 1MB limit
                {
                    ModelState.AddModelError("fileToUpload", "Your file is to large. Maximum size allowed is 1MB !");
                }

                else
                {
                    string fileName = Path.GetFileName(fileToUpload.FileName);
                    string directory = Server.MapPath("~/fileUploads/");

                    if (!Directory.Exists(directory))
                    {
                        Directory.CreateDirectory(directory);
                    }

                    string path = Path.Combine(directory, fileName);
                    fileToUpload.SaveAs(path);

                    ModelState.Clear();
                    ViewBag.Message = "File uploaded successfully!";
                }
            }

                return View("FileUpload");

        }



        public ActionResult About()
        {
            ViewBag.Message = "Your app description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-15 17:28:58

简短的答案是No。我猜是因为你是“新手”,所以你想要专注于MVC部分,但MVC和JavaScript是紧密相连的,想想客户端(JavaScript)和服务器(MVC),你真的应该掌握这两者才能制作出好的网站。

通常,服务器不会向浏览器触发事件,而是由浏览器发出请求。有一些方法可以让服务器使用诸如SignalR之类的东西在客户机上引发事件,但在这种情况下,这就有点夸张了。

终于..。你想要实现的很大程度上是一个客户端的动作,即通知用户去做一些事情。如果你在MVC中做这件事,你会浪费网络带宽并增加延迟(认为服务器调用是昂贵的),而实际上这是一个客户端操作,所以应该在JavaScript中完成。

不要回避JavaScript。拥抱它。研究一下JQuery,它为您减轻了许多繁重的负担。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16561215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档