我搜索了很多,但没有找到任何解决方案。我有一个产品表,这里ProductID是guid。在index.cshtml中,我有一个编辑链接
@Html.ActionLink("Edit","Edit","Admin",new{id=i.ProductID})
当我点击链接时,网址就像
http://localhost:5546/Admin/Edit?Length=5
我得到以下错误
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Guid' for method 'System.Web.Mvc.ActionResult Edit(System.Guid)' in 'RiotBooks.Controllers.AdminController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
参数名称:参数 我该如何解决?
答案 0 :(得分:3)
你正在使用错误的ActionLink重载。
你在那里打电话的是this one:
public static MvcHtmlString ActionLink(
this HtmlHelper htmlHelper,
string linkText,
string actionName,
Object routeValues,
Object htmlAttributes
)
但你真的想打电话给this one:
public static MvcHtmlString ActionLink(
this HtmlHelper htmlHelper,
string linkText,
string actionName,
string controllerName,
Object routeValues,
Object htmlAttributes
)
所以只需将您的电话改为
即可@Html.ActionLink("Edit","Edit","Admin",new{id=i.ProductID}, null)
你会很好。
对于记录,给我的提示是?Length=5
来自于传递给routeValues参数的string
“Admin”只有一个属性({{1} }),Length
的长度为5。