找回密码
 会员注册
查看: 164|回复: 0

asp.net core MVC 区域Areas 下 使用 TagHelper asp-area asp-controller a

[复制链接]

250

主题

1

回帖

819

积分

管理员

积分
819
发表于 2024-2-29 08:49:07 | 显示全部楼层 |阅读模式

1)在 ~/Areas/区域名称/Views  目录下 新建 _ViewImports.cshtml 文件

2)路由配置信息

  1. app.UseMvc(routes =>
  2. {
  3. routes.MapRoute(
  4. name: "default",
  5. template: "{controller=Home}/{action=Index}/{id?}");
  6. // 区域路由
  7. routes.MapRoute(
  8. name: "areas",
  9. template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
  10. );
  11. });
复制代码

 

3)视图

  1. <form class="layui-form" asp-area="Admin" asp-controller="Blog" asp-action="CategoryAdd" data-ajax-success="onSuccess" data-ajax="true" data-ajax-method="POST"></form>
复制代码

4)TagHelper 根据路由匹配规则,解析得到的路径为  /Blog/CategoryAdd?area=Admin,

很明显,这不是正确的,路由规则匹配成了这个 routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");

5)这时,我们得调整下路由的注册顺序,因为路由匹配是按顺序地成功匹配到的第一个,把 区域 的路由放到第一个

  1. app.UseMvc(routes =>
  2. {
  3. // 匹配所有的区域 需要在对应Controller 上添加区域属性 如:[Area("Admin")]
  4. // 把 Area的路由放在第一位,会保证 在 Areas 下的视图,使用 TagHelper 时候,
  5. // 使用 asp-area asp-controller asp-action 能正确的匹配上
  6. // 如果不把这个路由放在这里,当你的Areas下的视图的路径 和 非Areas 目录下的视图
  7. // asp-controller asp-action 一样时,会匹配第一个能合适的路由
  8. // 而这时,你在 Areas 下的视图,就没有匹配到正确的路径
  9. routes.MapRoute(
  10. name: "areas",
  11. template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
  12. );
  13. routes.MapRoute(
  14. name: "default",
  15. template: "{controller=Home}/{action=Index}/{id?}");
  16. });
复制代码

6)这样就得到了正确的路径

注:在路由配置正确的前提下,form 表单里,只写 asp-action 的时候,可以不用写 asp-are 和 asp-controller,框架代码默认会查到当前所在的 区域(Areas) 和 控制器(Controller) 下 对应的 Action

7)参考资料


来源:https://blog.csdn.net/qq1326702940/article/details/82799488
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?会员注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 13:13 , Processed in 6.389191 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表