在ActionLink中使用guid

时间:2014-03-11 19:08:40

标签: asp.net-mvc

我搜索了很多,但没有找到任何解决方案。我有一个产品表,这里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.

参数名称:参数 我该如何解决?

1 个答案:

答案 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。