参数字典包含非可空类型’System.Int32’的参数’id’的空条目
我正在构建我的第一个MVC应用程序,我在数据库中有一个包含3列的表:
- Id→主键
- 用户名
- 密码
当我点击编辑链接编辑一条记录时,它抛出以下exception:
参数字典包含非可空类型’System.Int32’的参数’id’的空条目,用于’MvcApplication1.Controllers.UserController’中的方法’System.Web.Mvc.ActionResult Edit(Int32)’。 可选参数必须是引用类型,可空类型,或者声明为可选参数。 参数名称:参数
这是我的编辑代码:
public ActionResult Edit(int id, User collection) { UserDBMLDataContext db = new UserDBMLDataContext(); var q = from abc in db.User_Login_Details where abc.Id == id select abc; IList lst = q.ToList(); User_Login_Details userLook = (User_Login_Details)lst[0]; userLook.Username = collection.UserName; userLook.Password = collection.Password; db.SubmitChanges(); return RedirectToAction("Index"); }
您期望URL中有id
参数,但您没有提供。 如:
https://yoursite.com/controller/edit/12 ^^ missing
在您的WebApiConfig
>> Register ()
您必须更改为
config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional }
这里是routeTemplate
,添加了{action}
此错误意味着MVC框架无法找到您作为参数传递给Edit
方法的id
属性的值。
MVC在路由数据,查询字符串和表单值等位置搜索这些值。
例如,以下内容将在您的查询字符串中传递id
属性:
/Edit?id=1
一种更好的方法是编辑路由配置,以便您可以将此值作为URL本身的一部分传递:
/Edit/1
MVC搜索参数值的过程称为模型绑定,它是MVC的最佳function之一。 您可以在此处找到有关模型绑定的更多信息。
表单上的操作方法是否指向/controller/edit/1
?
尝试使用以下其中一种:
// the null in the last position is the html attributes, which you usually won't use // on a form. These invocations are kinda ugly Html.BeginForm("Edit", "User", new { Id = Model.Id }, FormMethod.Post, null) Html.BeginForm(new { action="Edit", controller="User", id = Model.Id })
或者在表单内添加隐藏的“Id”字段
@Html.HiddenFor(m => m.Id)
您收到该错误,因为ASP.NET MVC无法找到id参数值来提供action方法的id参数。
您需要将其作为URL的一部分传递(“/ Home / Edit / 123”),作为查询字符串参数(“/ Home / Edit?id = 123”)或作为POSTed参数传递(确保具有类似的HTML表单。
或者,您可以将id
参数设置为可为空的int( Edit(int? id, User collection) {...}
),但如果id为null,则您将不知道要编辑的内容。
以防这有助于其他任何人; 如果您将“视图”作为“打开”选项卡,则Visual Studio中可能会发生此错误,该选项卡取决于参数。
关闭当前视图并启动您的应用程序,应用程序将启动“正常”; 如果您打开了一个视图,Visual Studio会将其解释为您想要运行当前视图。
我有同样的错误,但对我来说,问题是我正在使用错误的GUID执行请求。 我错过了最后2个字符。
上述就是C#学习教程:参数字典包含非可空类型’System.Int32’的参数’id’的空条目分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
360476f3-a4c8-4e1c-96d7-3c451c6c86 360476f3-a4c8-4e1c-96d7-3c451c6c865e
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1026842.html