在我的项目中,我有这样的观点:
@using (Html.BeginForm(MVC.Admin.Sys.ActionNames.Index, MVC.Admin.Sys.Name, FormMethod.Post, new { enctype = "multipart/form-data" }))
{...}
我的行动是:
[HttpGet]
public virtual ActionResult Index()
{...}
[HttpPost]
public virtual ActionResult Index(EditSysInfo sysInfoViewModel,HttpPostedFileBase file)
{}
在View中我有:
<input type="file" name="file"/> ... submit button
但是当点击“提交”按钮时,不要选择“发布”操作,并重定向到
httpget动作。昨天工作正常。我不知道为什么不跑?
今天我只需安装Microsoft.AspNet.Web.Optimization
。
改变时:
@using (Html.BeginForm())
它的工作正常,但不能以这种方式发布文件。
我尝试将文件设置为Action Like This:
HttpPostedFileBase logo = Request.Files.Get("file");
Allways Count Request.Files
为Zero
。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(EditSysInfo sysInfoViewModel,HttpPostedFileBase file)
{...}
并在视图中:
@using (Html.BeginForm(MVC.Admin.SysInfo.ActionNames.Index, MVC.Admin.SysInfo.Name, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="file"/>
}
答案 0 :(得分:0)
我认为您的问题是,BeginForm
辅助方法无法使用action属性值正确生成表单标记。可能是因为您提供的参数无效。
尝试将操作名称和控制器名称作为字符串传递。
以下代码应该可以正常工作。
@using (Html.BeginForm("Index", "Home", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
<input type="file" name="file"/>
<input type="submit"/>
}
假设Index
中的HomeController
操作方法。如果您的控制器名称不同,请更新第二个参数。