在Html.BeginForm MVC4控制器动作中传递多个参数

我有这样的事情:

public ActionResult ImageReplace(int imgid,HttpPostedFileBase file) { string keyword = imgid.ToString(); ....... } 

在我的.cshtml中:

  @model Models.MemberData @using (Html.BeginForm("ImageReplace", "Member", FormMethod.Post, new { imgid = @Model.Id, enctype = "multipart/form-data" })) {   } 

这里imgid的值没有传递给控制器​​动作。 显示错误,参数字典包含参数’imgid’的非可空类型’System.Int32’的空条目,用于方法’System.Web.Mvc.ActionResult ImageReplace

使用此重载 ,它允许您区分路由值和HTML属性:

 @using (Html.BeginForm( "ImageReplace", "Member", new { imgid = @Model.Id }, FormMethod.Post, new { enctype = "multipart/form-data" })) {   } 

您还可以将imgid作为表单中的字段传递,例如:

 @model Models.MemberData @using (Html.BeginForm("ImageReplace", "Member", FormMethod.Post, new { enctype = "multipart/form-data" })) { @Html.HiddenFor(x => x.Id)   } 

用这个:

  @using (Html.BeginForm("ImageReplace", "Member", new { imgid = @Model.Id }, FormMethod.Post, new { enctype = "multipart/form-data" }))