【问题标题】:How to access url with custom route pattern?如何使用自定义路由模式访问 url?
【发布时间】: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,但它不起作用。 我在这里想念什么? 谢谢!

【问题讨论】:

  • 您的问题中的&lt;li&gt; 标签是Users 控制器的Index.cshtml 的片段吗?如果是,只需删除123:使用asp-controller="Users"
  • @Jackdaw,如果我删除它,什么都不会发生。页面将重新加载
  • 但是当您使用asp-controller="123/Users" asp-action="Index" 按下此链接时会发生什么?您已经在控制器UsersIndex 视图中。 有什么好处?
  • @Jackdaw,当用户点击该按钮时,它将继续点赞localhost:44387/123/Users,但 123 只是虚拟数据,计划在我找到解决方案后点赞一些 CompanyName,将显示用户索引,跨度>

标签: c# asp.net-core razor routes asp.net-core-mvc


【解决方案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
  • 我的坏先生,它的作品!我只是忘了取消注释自定义代码。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多