如果我将参数从 id 重命名为 albumId,ASP.Net MVC3 会出现异常
我正在关注 ASP.Net MVC3 应用程序音乐商店,我注意到了这一点。
这是我在 Store 控制器中的详细信息操作。
public ActionResult Details(int id)
{
var album = new Album() { Title = "Dark Side of The Moon" + id };
return View(album);
}
//View
@model MvcMusicStore.Models.Album
@{
ViewBag.Title = "Details";
}
<h2>Album Name: @Model.Title</h2>
它工作正常,但是当我尝试将参数名称从“id”更改为“albumId”时,出现以下错误:
参数字典包含一个 参数“albumid”的空条目 不可为空类型“System.Int32” 方法'System.Web.Mvc.ActionResult 详细信息(Int32)' in 'MvcMusicStore.Controllers.StoreController'。 可选参数必须是 引用类型、可为 null 的类型,或者是 声明为可选参数。 参数名称:参数
为什么使用某个名称的变量可以工作,但使用另一个名称时会产生此错误? MVC 是否会自动使用变量名称“id”执行某些操作?
I'm following along the ASP.Net MVC3 application Music Store and I've noticed this.
Here is my Details action in the Store controller.
public ActionResult Details(int id)
{
var album = new Album() { Title = "Dark Side of The Moon" + id };
return View(album);
}
//View
@model MvcMusicStore.Models.Album
@{
ViewBag.Title = "Details";
}
<h2>Album Name: @Model.Title</h2>
It works fine, however when I tried to change the parameter name from "id" to "albumId" I get the following error:
The parameters dictionary contains a
null entry for parameter 'albumid' of
non-nullable type 'System.Int32' for
method 'System.Web.Mvc.ActionResult
Details(Int32)' in
'MvcMusicStore.Controllers.StoreController'.
An optional parameter must be a
reference type, a nullable type, or be
declared as an optional parameter.
Parameter name: parameters
Why does having a variable with a certain name work, but with another name it produces this error? Does MVC do something automagically with variables names "id"?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的路由配置可能有 {controller}/{action}/{id},其中应该有 {controller}/{action}/{albumid}
查看您的 global.asax
Your routing configuration likely has {controller}/{action}/{id}, where it should have {controller}/{action}/{albumid}
Look in your global.asax