我在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 =“文件已成功上传”在我的视图中未显示
答案 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。