解决视图中的部分/不完整路由
Posted
技术标签:
【中文标题】解决视图中的部分/不完整路由【英文标题】:Resolve a partial/incomplete Route in a View 【发布时间】:2020-08-21 13:47:22 【问题描述】:我有一个位于 /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
有没有办法让我只返回/api/Test/Foo/
(稍后由 javascript 使用)?
我试过@Url.RouteUrl("UserProfile")
但这会返回一个空字符串,@Url.Action("Foo", "Test", new area = "api"
返回/Test/Foo?area=api
【问题讨论】:
【参考方案1】:问题是“id”的默认路由实际上是将其添加到 url,而不是使用它作为查询参数。试试下面的方法。
控制器
[HttpGet(Name = "TestRouteName")]
public IActionResult Foo(int id)
.........
查看
@(Url.RouteUrl("TestRouteName"))
访问视图的网址
api/Test/Foo?id=1234
或者您可以使用以下内容来获得您想要的。
@(Url.Action("Foo", "Test"))
【讨论】:
【参考方案2】:为了不为您的路由参数id
提供任何内容(null),您应该在名称(reference)后面加上问号?
:
[HttpGet("id?", Name= "TestRouteName")]
public IActionResult Foo(int id)
....
但请注意,如果您不将 int id
参数设为可为空,则在访问路由时,id
的默认值将是 0
。
【讨论】:
以上是关于解决视图中的部分/不完整路由的主要内容,如果未能解决你的问题,请参考以下文章
Ajax POST 返回 Bootstrap 面板主体内的完整部分视图