在视图中解析 partial/incomplete 路由
Resolve a partial/incomplete Route in a View
我有一个位于 /api/Test/Foo/1234
的 API 控制器
[Area("Api")]
[ApiController]
[Route("/api/[controller]/[action]")]
public class TestController : ControllerBase
{
[HttpGet("{id}", Name= "TestRouteName")]
public IActionResult Foo(int id)
{
....
}
}
在一个视图中,我可以正确地将此 URL 与 @Url.RouteUrl("TestRouteName", new { id = 1234 })
解析为 /api/Test/Foo/1234
有没有办法让我 return /api/Test/Foo/
(稍后被 JavaScript 使用)?
我试过 @Url.RouteUrl("UserProfile")
但是这个 return 是一个空字符串,@Url.Action("Foo", "Test", new { area = "api" }
returns /Test/Foo?area=api
为了不让你的路由参数id
空值(null),你应该在名称(reference)后面加上一个问号?
:
[HttpGet("{id?}", Name= "TestRouteName")]
public IActionResult Foo(int id)
{
....
}
但是请注意,如果您不使 int id
参数可为空,则在访问路由时 id
的默认值将是 0
。
问题是 "id" 的默认路由实际上是将其添加到 url,而不是将其用作查询参数。试试下面的方法。
控制器
[HttpGet(Name = "TestRouteName")]
public IActionResult Foo(int id)
{
.........
}
查看
@(Url.RouteUrl("TestRouteName"))
Url 访问视图
api/Test/Foo?id=1234
或者您可以使用以下方法来获得您想要的。
@(Url.Action("Foo", "Test"))
我有一个位于 /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 与 @Url.RouteUrl("TestRouteName", new { id = 1234 })
解析为 /api/Test/Foo/1234
有没有办法让我 return /api/Test/Foo/
(稍后被 JavaScript 使用)?
我试过 @Url.RouteUrl("UserProfile")
但是这个 return 是一个空字符串,@Url.Action("Foo", "Test", new { area = "api" }
returns /Test/Foo?area=api
为了不让你的路由参数id
空值(null),你应该在名称(reference)后面加上一个问号?
:
[HttpGet("{id?}", Name= "TestRouteName")]
public IActionResult Foo(int id)
{
....
}
但是请注意,如果您不使 int id
参数可为空,则在访问路由时 id
的默认值将是 0
。
问题是 "id" 的默认路由实际上是将其添加到 url,而不是将其用作查询参数。试试下面的方法。
控制器
[HttpGet(Name = "TestRouteName")]
public IActionResult Foo(int id)
{
.........
}
查看
@(Url.RouteUrl("TestRouteName"))
Url 访问视图
api/Test/Foo?id=1234
或者您可以使用以下方法来获得您想要的。
@(Url.Action("Foo", "Test"))