24 c# asp.net-mvc
我正在构建我的第一个MVC应用程序,我在数据库中有一个包含3列的表:
当我点击编辑链接编辑一条记录时,它抛出以下异常:
参数字典包含非可空类型'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");
}
Run Code Online (Sandbox Code Playgroud)
Sim*_*ead 36
您期望idURL中的参数,但您没有提供参数.如:
http://yoursite.com/controller/edit/12
^^ missing
Run Code Online (Sandbox Code Playgroud)
小智 13
在你的
WebApiConfig>> Register ()
你必须改为
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
Run Code Online (Sandbox Code Playgroud)
这里routeTemplate添加了{action}
此错误意味着MVC框架无法为您id作为参数传递给该Edit方法的属性找到值.
MVC在路由数据,查询字符串和表单值等位置搜索这些值.
例如,以下内容将id在您的查询字符串中传递该属性:
/Edit?id=1
Run Code Online (Sandbox Code Playgroud)
一种更好的方法是编辑路由配置,以便您可以将此值作为URL本身的一部分传递:
/Edit/1
Run Code Online (Sandbox Code Playgroud)
MVC搜索参数值的过程称为模型绑定,它是MVC的最佳功能之一.您可以在此处找到有关模型绑定的更多信息.
| 归档时间: |
|
| 查看次数: |
139844 次 |
| 最近记录: |