C# 在视图中解析部分/不完整的管线
我有一个API控制器,它位于C# 在视图中解析部分/不完整的管线,c#,asp.net-core,asp.net-core-mvc,asp.net-core-3.1,asp.net-core-routing,C#,Asp.net Core,Asp.net Core Mvc,Asp.net Core 3.1,Asp.net Core Routing,我有一个API控制器,它位于/API/Test/Foo/1234 [Area("Api")] [ApiController] [Route("/api/[controller]/[action]")] public class TestController : ControllerBase { [HttpGet("{id}", Name= "TestRouteName")] public IActionResult Foo(int id) { ...
/API/Test/Foo/1234
[Area("Api")]
[ApiController]
[Route("/api/[controller]/[action]")]
public class TestController : ControllerBase
{
[HttpGet("{id}", Name= "TestRouteName")]
public IActionResult Foo(int id)
{
....
}
}
在一个视图中,我可以使用@URL.RouteUrl(“TestRouteName,new{id=1234})”将此URL正确解析为/api/Test/Foo/1234
[Area("Api")]
[ApiController]
[Route("/api/[controller]/[action]")]
public class TestController : ControllerBase
{
[HttpGet("{id}", Name= "TestRouteName")]
public IActionResult Foo(int id)
{
....
}
}
有没有一种方法可以让我直接返回/api/Test/Foo/
(稍后由JavaScript使用)
我尝试过@Url.RouteUrl(“UserProfile”)
但这会返回一个空字符串,@Url.Action(“Foo”,“Test”,new{area=“api”}
返回/Test/Foo?area=api
,以便不允许为路由参数id
指定任何内容(null),您应该在名称():
但是,请注意,如果不将int-id
参数设置为空,则访问路由时,id
的默认值将为0
。问题在于,默认的“id”路由实际上是将其添加到url中,而不是将其用作查询参数。请尝试以下操作
控制器
[HttpGet(Name = "TestRouteName")]
public IActionResult Foo(int id)
{
.........
}
查看
@(Url.RouteUrl("TestRouteName"))
api/Test/Foo?id=1234
访问视图的Url
@(Url.RouteUrl("TestRouteName"))
api/Test/Foo?id=1234
或者你可以用下面的方法得到你想要的
@(Url.Action("Foo", "Test"))