【发布时间】:2011-12-03 17:05:03
【问题描述】:
我有以下 HTML:
<%: Html.ActionLink(item.ProductName, "Details", "Product", new { item.ProductId }, null)%>
这被渲染为:
<a href="/Product/Details?ProductId=1">My Product Name</a>
但是,当我点击它时,我收到以下错误:
参数字典包含参数“id”的空条目 方法的不可空类型“System.Int32” 'System.Web.Mvc.ActionResult 详细信息(Int32)' 在 'MyProject.Controllers.ProductController'。可选参数必须 是引用类型、可为空的类型或被声明为可选项 范围。
参数名称:参数
我的路由似乎不喜欢“?ProductId=1”查询字符串。
如果我改用:
<%: Html.ActionLink(item.ProductName, string.Format("Details/{0}", item.ProductId), "Product", null, null)%>
我得到以下链接:
<a href="/Product/Details/1">My Product Name</a>
...点击后可以正常工作。
我在这里缺少一些基本的东西吗?我想使用 RouteValues,但我不明白为什么会抛出这个错误。如何让我的 Controller 方法接受查询字符串参数?
我拥有的唯一路线图是:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 model-view-controller asp.net-mvc-routing