C# 为什么控制器的参数为';的方法是否为空Guid?
ASP.NET核心MVC 2 客户端代码:C# 为什么控制器的参数为';的方法是否为空Guid?,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,ASP.NET核心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-a5
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);
}
服务器端(控制器的方法):
为什么这里的guid为空?我如何修复它?您尚未共享路由定义。如果使用默认路由定义,则需要在url中显式指定参数名称,因为该名称未命名为
id
这应该行得通
yourSiteBaseUrl/Home/task?guid=aa348338-d367-4635-a5e5-9208c9d0e6a5
或
您可以将参数名称更改为id
,现在可以使用格式为/controllername/actionname/{id}
的请求url,该格式定义为默认路由注册
[HttpGet]
public string Task(Guid id)
{
return id.ToString();
}
现在,urlyourSiteBaseUrl/Home/task/aa348338-d367-4635-a5e5-9208c9d0e6a5
会起作用的
或
如果仍希望将参数名称用作guid
,但希望将url模式用作actionName/guidValue
,则可以使用属性路由为此操作方法定义自定义路由模板
使用路由
属性定义路由模板
[HttpGet]
[Route("Home/task/{guid:Guid}")]
public string Task(Guid guid)
{
return guid.ToString();
}
现在,urlyourSiteBaseUrl/Home/task/aa348338-d367-4635-a5e5-9208c9d0e6a5
将起作用您尚未共享您的路线定义。如果使用默认路由定义,则需要在url中显式指定参数名称,因为该名称未命名为id
这应该行得通
yourSiteBaseUrl/Home/task?guid=aa348338-d367-4635-a5e5-9208c9d0e6a5
或
您可以将参数名称更改为id
,现在可以使用格式为/controllername/actionname/{id}
的请求url,该格式定义为默认路由注册
[HttpGet]
public string Task(Guid id)
{
return id.ToString();
}
现在,urlyourSiteBaseUrl/Home/task/aa348338-d367-4635-a5e5-9208c9d0e6a5
会起作用的
或
如果仍希望将参数名称用作guid
,但希望将url模式用作actionName/guidValue
,则可以使用属性路由为此操作方法定义自定义路由模板
使用路由
属性定义路由模板
[HttpGet]
[Route("Home/task/{guid:Guid}")]
public string Task(Guid guid)
{
return guid.ToString();
}
现在,urlyourSiteBaseUrl/Home/task/aa348338-d367-4635-a5e5-9208c9d0e6a5
会起作用的