【发布时间】:2018-06-06 19:44:23
【问题描述】:
我需要生成一个包含“系统”和“类别”执政官或按钮的导航。 System 和 Category 使用相同的控制器。我想使用[Route()] 而不是Startup 文件进行路由。
对于执政官类别效果很好:
<a asp-area="Admin" asp-controller="@value.Controller" asp-action="@Constants.Route.List" asp-route-valueId="@value.ValueId">@value.Value</a>
但我不知道如何将相同的控制器用于“admin/system/list”而不是 admin/categorytype/list,到目前为止我尝试过:
1)
<a asp-area="Admin" asp-route="System" asp-action="@Constants.Route.List" asp-route-valueId="@value.ValueId">@value.Value</a>
2)
<a asp-route="Admin/System/List" asp-route-valueId="@value.ValueId">@value.Value</a>
在控制器处
[Area("Admin")]
[Route("Admin/[controller]")]
[Route("Admin/System")]
[Authorize]
public class CategoryTypeController : Controller {}
[Route("[action]")]
public ViewResult List(int valueId) {}
3)
<a href="@Url.RouteUrl("SystemValue", new { valueId = value.ValueId })">@value.Value</a>
在控制器处
[Area("Admin")]
[Route("Admin/[controller]")]
[Route("Admin/System", Name = "SystemValue")]
[Authorize]
public class CategoryTypeController : Controller {}
[Route("[action]")]
public ViewResult List(int valueId) {}
以上路由均未生成允许我通过 /admin/system/list 转到 CategoryType 控制器和 List 操作的 url
我在Startup 文件中也有app.UseMvcWithDefaultRoute();。
编辑:
当我手动输入地址/admin/system/list - 路由器工作,
但我无法为按钮或执政官生成这样的 url 以匹配 /admin/system/list
编辑:
我找到了一个解决方案,但我对此并不满意,结果我不明白路由是如何工作的。对我来说,[Route ()] 属性是定义路由的一种方式,app.UseMvc() 是第二种方式。我必须在两个地方定义路线。
在 Startup.cs
app.UseMvc(routes =>
{
routes.MapRoute(
name: "SystemValue",
template: "Admin/System/List/{id?}",
defaults: new { area = "Admin", controller = "CategoryType", action = "List" });
});
控制器
[Area("Admin")]
[Route("Admin/[controller]")]
[Route("Admin/System", Name = "SystemValue")]
[Authorize]
public class CategoryTypeController : Controller
{}
[Route("[action]")]
public ViewResult List(int valueId) {}
查看
<a href="@Url.RouteUrl("SystemValue", new { valueId = value.ValueId})">@value.Value</a>
我仍然会寻找解决方案,如何仅使用 [Route ("")]
【问题讨论】:
-
[Area("Admin")] [Route("Admin/[controller]")] [Route("System", Name = "SystemValue")] [Authorize] public class CategoryTypeController : Controller {} [Route("List")] public ViewResult List(int valueId) {}工作吗? -
当我手动输入地址/管理员/系统/列表-路由器工作,但我无法为按钮或执政官生成这样的网址,我编辑了主帖子。 [Route ("List")] 到与 [Route ("[action]")] 相同的事物]
-
but I can not generate such a url for button它生成了什么 url ? -
我附上了一张图片 - 没有
-
屏幕截图中的视图。它是内部还是外部
Admin区域?
标签: c# asp.net-core asp.net-core-mvc asp.net-core-2.0