Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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# aspnetcore路由到具有自定义路由的控制器操作_C#_Asp.net Core_Url Routing_Asp.net Mvc Routing - Fatal编程技术网

C# aspnetcore路由到具有自定义路由的控制器操作

C# aspnetcore路由到具有自定义路由的控制器操作,c#,asp.net-core,url-routing,asp.net-mvc-routing,C#,Asp.net Core,Url Routing,Asp.net Mvc Routing,我有一个控制器“ServicesController”,其操作“Edit”带有一个字符串参数“serviceId” 此控制器具有如图所示应用的路由,并按预期工作 [Route("Services/Edit/{id}")] public async Task<IActionResult> EditService(string id) { Service s = await _servicesService.GetService(id); return

我有一个控制器“ServicesController”,其操作“Edit”带有一个字符串参数“serviceId”

此控制器具有如图所示应用的路由,并按预期工作

[Route("Services/Edit/{id}")]
public async Task<IActionResult> EditService(string id)
{
    Service s = await _servicesService.GetService(id);
    return View("EditService", s);
}
我搜索了一些相关的答案,人们问了同样的问题,但建议的解决方案对我不起作用,我想这可能是因为我的行动有路线装饰吧

我也尝试了下面的方法,但这会重定向到id为的调用操作

[Route("Services/Foo/{serviceId}")]
public async Task<IActionResult> Foo(string serviceId)
{
    // redirects to /Services/Foo/exampleid
    return RedirectToRoute("Edit", serviceId);
}
[路由(“Services/Foo/{serviceId}”)]
公共异步任务Foo(字符串serviceId)
{
//重定向到/Services/Foo/exampleid
返回重定向路由(“编辑”,serviceId);
}
我的错误在哪里?

而不是:

return RedirectToAction("Edit", new { id = s.Id });
尝试:

而不是:

return RedirectToAction("Edit", new { id = s.Id });
尝试:


RedirectToAction
的第一个参数是
actionName
,它是方法的名称,在我们的例子中应该是
EditService
。这里有一个链接到。所以,我认为正确的版本应该是这样的:

return RedirectToAction("EditService", new { id = s.Id });
[Route("Services/Edit/{id}", Name = "MyEditServiceRoute")]
public async Task<IActionResult> EditService(string id)
{
    ...
}

...

{
    ...
    return RedirectToRoute("MyEditServiceRoute", serviceId);
}
它还有一个重载版本
RedirectToAction(string actionName、string controllerName、object RouteValue)
,它允许在重定向不在同一控制器内时指定控制器

关于
RedirectToRoute
,它接受路由的名称,因此我们需要为
EditService(字符串id)
操作设置名称,如下所示:

return RedirectToAction("EditService", new { id = s.Id });
[Route("Services/Edit/{id}", Name = "MyEditServiceRoute")]
public async Task<IActionResult> EditService(string id)
{
    ...
}

...

{
    ...
    return RedirectToRoute("MyEditServiceRoute", serviceId);
}
[Route(“Services/Edit/{id}”,Name=“MyEditServiceRoute”)]
公共异步任务EditService(字符串id)
{
...
}
...
{
...
返回重定向路由(“MyEditServiceRoute”,serviceId);
}

重定向到操作的
的第一个参数是
actionName
,它是方法的名称,在我们的例子中,它应该是
EditService
。这里有一个链接到。所以,我认为正确的版本应该是这样的:

return RedirectToAction("EditService", new { id = s.Id });
[Route("Services/Edit/{id}", Name = "MyEditServiceRoute")]
public async Task<IActionResult> EditService(string id)
{
    ...
}

...

{
    ...
    return RedirectToRoute("MyEditServiceRoute", serviceId);
}
它还有一个重载版本
RedirectToAction(string actionName、string controllerName、object RouteValue)
,它允许在重定向不在同一控制器内时指定控制器

关于
RedirectToRoute
,它接受路由的名称,因此我们需要为
EditService(字符串id)
操作设置名称,如下所示:

return RedirectToAction("EditService", new { id = s.Id });
[Route("Services/Edit/{id}", Name = "MyEditServiceRoute")]
public async Task<IActionResult> EditService(string id)
{
    ...
}

...

{
    ...
    return RedirectToRoute("MyEditServiceRoute", serviceId);
}
[Route(“Services/Edit/{id}”,Name=“MyEditServiceRoute”)]
公共异步任务EditService(字符串id)
{
...
}
...
{
...
返回重定向路由(“MyEditServiceRoute”,serviceId);
}

使用路由上的“name”属性尝试路由的显式名称

[Route("Services/Edit/{id}", Name="EditService")]
然后在重定向上提供该特定名称:

return RedirectToAction("EditService", new { id = s.Id });

使用路由上的“name”属性尝试路由的显式名称

[Route("Services/Edit/{id}", Name="EditService")]
然后在重定向上提供该特定名称:

return RedirectToAction("EditService", new { id = s.Id });

[FromRoute]
放在参数前面是否有效<代码>编辑服务([FromRoute]字符串id)
[FromRoute]
放在参数前面是否有效<代码>编辑服务([FromRoute]字符串id)
和ochzhen以5秒的优势击败了我奥珍以5秒的优势击败了我我知道可能会是那样的愚蠢错误,谢谢你的帮助我知道可能会是那样的愚蠢错误,谢谢你的帮助