【发布时间】:2014-08-07 17:16:21
【问题描述】:
我一直在我的 edit.cshtml 页面顶部使用这一行:
@using (Html.BeginForm())
但后来我把它改成了:
@using (Html.BeginForm("Edit", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
现在当我在该页面上点击提交时,我尝试运行此方法:
public ActionResult Edit([Bind(Include = "description,tags,files,fileString")] Task task, int keyId, string editFiles)
我收到此错误:
参数字典包含参数“keyId”的空条目 方法的不可为空类型“System.Int32” 'System.Web.Mvc.ActionResult Edit(Combined.Models.Task, Int32, System.String)”在“Combined.Controllers.HomeController”中。一个可选的 参数必须是引用类型、可为空的类型或声明为 一个可选参数。参数名称:参数说明:一个 当前 web 执行过程中发生未处理的异常 要求。请查看堆栈跟踪以获取有关 错误以及它起源于代码的位置。
异常详细信息:System.ArgumentException:参数 字典包含不可为空的参数“keyId”的空条目 为方法“System.Web.Mvc.ActionResult”键入“System.Int32” 编辑(Combined.Models.Task,Int32,System.String)' 在 'Combined.Controllers.HomeController'。可选参数必须是 引用类型,可为空的类型,或被声明为可选 范围。参数名称:参数
来源错误:
在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
我尝试将行更改为:
@using (Html.BeginForm("Edit", "Home", FormMethod.Post, new { enctype = "multipart/form-data", keyId = Model.keyId }))
但这并没有什么不同。我做错了什么?
【问题讨论】:
-
你实际上使用了错误的重载
标签: c# asp.net-mvc asp.net-mvc-4 razor