页面重新加载时未显示ViewBag内容

时间:2014-01-31 09:56:38

标签: html asp.net-mvc asp.net-mvc-4

我在mvc

做我的项目

我有控制器将文件上传到文件夹

   public ActionResult UploadFile(HttpPostedFileBase file)
    {
        if (ModelState.IsValid)
        {
            if (file == null) { ModelState.AddModelError("File", "Please Upload Your file"); }
            else if (file.ContentLength > 0)
            {
                .................
                else
                {   //Excel file copied temporarily to temp folder
                    var filename = Guid.NewGuid().ToString() + Path.GetExtension(file.FileName);
                    var path = Path.Combine(Server.MapPath("~/App_Data/Uploads/"), filename);
                    file.SaveAs(path);
                    ModelState.Clear();
                    ViewBag.Message = "File uploaded successfully";

                }
            }
        }
        return RedirectToAction("UploadSTR", "Upload");
    }

我的观点是

       @using (Html.BeginForm("UploadFile", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
      File Path    put type="file"  name="file" id="file" />
      <input type="submit" name="submit" value="Upload" id="btn" />
}
<p> Message:@ViewBag.Message</p>

我的问题是提交后,文件上传并返回同一页面。但 ViewBag.Message =“文件已成功上传”在我的视图中未显示

3 个答案:

答案 0 :(得分:0)

如果您使用视图模型,则可以使用视图中的Html.HiddenFor()帮助程序将消息添加为隐藏的表单值。这样,值将在表单提交时返回到模型中。您可能无法使用ViewBag获得所需的功能。

ViewBag具有使用它的某些用途,例如在布局中设置页面标题。但总的来说,ViewBag是一个初学者级别的项目,您应该放弃支持视图模型,以利用MVC强大的自动视图模型绑定功能。

对于在ASP.NET MVC中使用视图模型的其他示例,可能需要浏览MVC Music Store example或Google。

答案 1 :(得分:0)

在重定向期间,您无法通过ViewBag(和ViewData)传递数据,您需要避免重定向或使用TempData。关于TempData,您可以在这里阅读ViewBag, ViewData and TempData

答案 2 :(得分:0)

ViewBag将无法继续重定向。请改用TempData。