Asp.net mvc 3 mvc3文件上传
每当我尝试将文件上载到服务器时,当前视图将重定向到与控制器不同的视图。如何上传文件并保持在同一视图上 我尝试了以下代码:Asp.net mvc 3 mvc3文件上传,asp.net-mvc-3,file-upload,Asp.net Mvc 3,File Upload,每当我尝试将文件上载到服务器时,当前视图将重定向到与控制器不同的视图。如何上传文件并保持在同一视图上 我尝试了以下代码: public Action Result(HttpPostedFileBase file) { return new EmptyResult(); } 应按预期工作,返回名为Result的视图 如果当前操作方法不是要返回的视图,则可以使用: return RedirectToAction("actionmethodname"); 我建议使用类似异步上传的东西。这样,您
public Action Result(HttpPostedFileBase file)
{
return new EmptyResult();
}
应按预期工作,返回名为Result的视图
如果当前操作方法不是要返回的视图,则可以使用:
return RedirectToAction("actionmethodname");
我建议使用类似异步上传的东西。这样,您就可以在不重定向的情况下进行上载,甚至在上载完成时查看图像/文档 它允许通过不同的方法进行多次上载和回退,以成功上载文件
对于实现,您只需创建另一个控制器来处理上传。在MVC Architecture中检查我的代码以提交文章
public ActionResult Submit(ArticleViewModel newSubmit, HttpPostedFileBase uploadFile)
{
if (ModelState.IsValid)
{
//Upload File
if (uploadFile != null)
{
string fileName = uploadFile.FileName;
newSubmit.Article.image = fileName;
uploadFile.SaveAs("~/Content/Uploads/Images");
string savedFileName = Path.Combine(Server.MapPath("~/Content/Uploads/Images"), uploadFile.FileName);
}
// The HTML comes encoded so we decode it before insert into database
newSubmit.Article.content = HttpUtility.HtmlDecode(newSubmit.Article.content);
//Set article flags
newSubmit.Article.flagged = true;
newSubmit.Article.finished = false;
newSubmit.Article.submitStoryFlag = true;
//Insert article in the database _repository.AddArticle(newSubmit);
return View("Submitted");
}
else
{
// Invalid – redisplay with errors
return View(newSubmit);
}
}
假设您的视图名为UploadView.cshtml,并且从那里开始上载文件 UploadView.cshtml
@using (Html.BeginForm("UploadFile", "MyController", FormMethod.Post, new { enctype = "multipart/form-data", id = "frm", name = "frm" }))
{
<input id="FileAttachments" type="file" name="FileAttachments" />
<input type="submit" value="upload" />
}
使用View()时,文件文本框中的文件路径将被删除。@sam您需要在响应后用适当的值填充“文本框”。您可以使用ViewBag来实现这一点。记住mvc!=webformssince其输入类型为文件我可以获取路径但无法设置path@sam使用
ViewBag
设置输入字段的文件名:ViewBag.filename=file.filename
然后在视图中将输入字段值属性设置为ViewBag.FileName
属性。
@using (Html.BeginForm("UploadFile", "MyController", FormMethod.Post, new { enctype = "multipart/form-data", id = "frm", name = "frm" }))
{
<input id="FileAttachments" type="file" name="FileAttachments" />
<input type="submit" value="upload" />
}
[HttpGet]
public ActionResult UploadView()
{
Return View();
}
[HttpPost]
public ActionResult UploadFile(HttpPostedFileBase FileAttachments)
{
if (FileAttachments != null)
{
string fileName = System.Guid.NewGuid().ToString() + Path.GetFileName(FileAttachments.FileName);
fileName = Path.Combine(Server.MapPath("~/Content/Files"), fileName);
FileAttachments.SaveAs(fileName);
}
return View("UploadView");
}