在一个控制器中使用 GUID 作为参数?
Use GUID as parameter in one controller?
我的目标是我仍然想使用默认的 asp.net mvc id
但我想像这样在一个控制器中使用 Guid
http://example.com/MyController/Index/387ecbbf-90e0-4b72-8768-52c583fc715b
这是我的路线
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
现在我的控制器
public ActionResult Index(Guid guid)
{
return View();
}
给我错误
The parameters dictionary contains a null entry for parameter 'guid'
of non-nullable type 'System.Guid' for method
'System.Web.Mvc.ActionResult Index(System.Guid)'
我猜是因为我在路线中有ID?如何在一个控制器中使用 GUID 作为参数,但在应用程序的其余部分(默认)使用 id
?
只需将参数名称从 guid
更改为 id
:
public ActionResult Index(Guid id)
{
return View();
}
绑定操作时,ASP.NET MVC 检查操作方法的类型和名称,并将它们映射到请求提供的参数。由于在路由中使用术语 id
,因此您必须相应地命名操作的参数。
我的目标是我仍然想使用默认的 asp.net mvc id
但我想像这样在一个控制器中使用 Guid
http://example.com/MyController/Index/387ecbbf-90e0-4b72-8768-52c583fc715b
这是我的路线
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
现在我的控制器
public ActionResult Index(Guid guid)
{
return View();
}
给我错误
The parameters dictionary contains a null entry for parameter 'guid' of non-nullable type 'System.Guid' for method 'System.Web.Mvc.ActionResult Index(System.Guid)'
我猜是因为我在路线中有ID?如何在一个控制器中使用 GUID 作为参数,但在应用程序的其余部分(默认)使用 id
?
只需将参数名称从 guid
更改为 id
:
public ActionResult Index(Guid id)
{
return View();
}
绑定操作时,ASP.NET MVC 检查操作方法的类型和名称,并将它们映射到请求提供的参数。由于在路由中使用术语 id
,因此您必须相应地命名操作的参数。