我无法让 @Url.Action
根据我应用的属性路由解析为我期望的 url:
我的操作(SearchController,但带有 [RoutePrefix("add")])
[Route("{searchTerm}/page/{page?}", Name = "NamedSearch")]
[Route("~/add")]
public ActionResult Index(string searchTerm = "", int page = 1)
{
...
}
调用 Url.Action
@Url.Action("Index", new { controller = "Search", searchTerm = "replaceMe", page = 1 })
这会产生一个 url
/add?searchTerm=replaceMe&page=1
我希望
/add/replaceMe/page/1
如果我手动输入网址,那么它会解析为具有正确参数的正确操作。为什么 @Url.Action
无法解析正确的 url?
最佳答案
由于您已经为漂亮的路由定义起了一个名称,因此您可以使用 RouteUrl
方法。
@Url.RouteUrl("NamedSearch", new { searchTerm = "replaceMe", page = 1})
由于您需要添加 url,因此您应该更新路由定义以将其包含在 url 模式中。
[Route("~/add")]
[Route("~/add/{searchTerm?}/page/{page?}", Name = "NamedSearch")]
public ActionResult Index(string searchTerm = "", int page = 1)
{
// to do : return something
}
关于asp.net-mvc - MVC 属性路由 Url.Action 无法解析路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36270852/