ASP.NET Core MVC 2
客户端代码:
static void Get(Uri uri, DownloadStringCompletedEventHandler callback)
{
var client = new WebClient();
client.DownloadStringCompleted += callback;
// Here uri is http://localhost:61698/Home/Task/aa348338-d367-4635-a5e5-9208c9d0e6a5
client.DownloadStringAsync(uri);
}
服务器端(控制器方法):
[HttpGet]
public string Task(Guid guid)
{
// Here guid is {00000000-0000-0000-0000-000000000000}
// instead of aa348338-d367-4635-a5e5-9208c9d0e6a5
}
为什么这里guid是空的&我该如何解决?
答案 0 :(得分:2)
您尚未分享路线定义。如果使用默认路由定义,则需要在URL中显式指定参数名称,因为它未命名为id
。
这应该有用。
yourSiteBaseUrl/Home/task?guid=aa348338-d367-4635-a5e5-9208c9d0e6a5
或强>
您可以将参数名称更改为id
,现在您可以使用/controllername/actionname/{id}
格式的请求网址,该格式被定义为默认路由注册。
[HttpGet]
public string Task(Guid id)
{
return id.ToString();
}
现在,网址yourSiteBaseUrl/Home/task/aa348338-d367-4635-a5e5-9208c9d0e6a5
将起作用
或强>
如果您仍希望将参数名称用作guid
,但希望将url模式用作actionName/guidValue
,则可以使用属性路由为此操作方法定义自定义路由模板。 / p>
使用Route
属性定义路径模板。
[HttpGet]
[Route("Home/task/{guid:Guid}")]
public string Task(Guid guid)
{
return guid.ToString();
}
现在,网址yourSiteBaseUrl/Home/task/aa348338-d367-4635-a5e5-9208c9d0e6a5
将起作用