Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么控制器的参数为';的方法是否为空Guid?_C#_Asp.net_.net_Asp.net Mvc - Fatal编程技术网

C# 为什么控制器的参数为';的方法是否为空Guid?

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

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-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();
}
现在,url
yourSiteBaseUrl/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();
}
现在,url
yourSiteBaseUrl/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();
}
现在,url
yourSiteBaseUrl/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();
}
现在,url
yourSiteBaseUrl/Home/task/aa348338-d367-4635-a5e5-9208c9d0e6a5
会起作用的