如何使用自定义路由模式访问 url?
Posted
技术标签:
【中文标题】如何使用自定义路由模式访问 url?【英文标题】:How to access url with custom route pattern? 【发布时间】:2022-01-10 08:01:22 【问题描述】:我已将我的模式设置为:
endpoints.MapControllerRoute(
//name: "default",
//pattern: "controller=Home/action=Index/id?");
name: "custom",
pattern: "company?/controller=Home/action=Index/id?");
endpoints.MapRazorPages();
当我访问像 https://localhost:44387/123/Users
这样的 url vie 浏览器时,页面将成功显示,并且值 123
在控制器中成功检索:
public IActionResult Index(string company)
//code here
如何通过 razor 访问它?在我更新模式之前,我只使用像这段代码这样的默认值
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="123/Users" asp-action="Index">User</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Clients" asp-action="Index">Client</a>
</li>
我尝试将123
附加到asp-controller
,但它不起作用。
我在这里想念什么?
谢谢!
【问题讨论】:
您的问题中的<li>
标签是Users
控制器的Index.cshtml
的片段吗?如果是,只需删除123
:使用asp-controller="Users"
。
@Jackdaw,如果我删除它,什么都不会发生。页面将重新加载
但是当您使用asp-controller="123/Users" asp-action="Index"
按下此链接时会发生什么?您已经在控制器Users
的Index
视图中。 有什么好处?
@Jackdaw,当用户点击该按钮时,它将继续点赞localhost:44387/123/Users,但 123 只是虚拟数据,计划在我找到解决方案后点赞一些 CompanyName,将显示用户索引,跨度>
【参考方案1】:
你可以使用:
<li class="nav-item">
<a class="nav-link text-dark" href="\123\Users\Index">User</a>
</li>
或者使用 HTML 辅助方法:
<li class="nav-item">
@Html.ActionLink("Users", "Index", "Users", routeValues: new company = "123" , htmlAttributes: new @class= "nav-link text-dark" )
</li>
欲了解更多信息,请参阅HtmlHelperLinkExtensions.ActionLink Method
【讨论】:
嗨,先生,它可以工作,但网址不同localhost:44387/Users?company=123 我的坏先生,它的作品!我只是忘了取消注释自定义代码。谢谢!以上是关于如何使用自定义路由模式访问 url?的主要内容,如果未能解决你的问题,请参考以下文章