.NetCore MVC项目,Razor Page链接标签帮助不生成问题解决方案

问题描述

新建立的MVC项目,添加Razor Page后,类似于<a asp-action="edit">Edit</a>或者Url.Action("Edit")这样的标签,在渲染之后链接部分不会生成。

解决方案

经排查,在Startup.cs的Configure中,有对路由的配置,但是仅针对MVC的:

            app.UseMvc(routes =>
            {
                //区域的路由定义,要放在前面,不然匹配不到,匹配会以参数形式出现在地址后面
                routes.MapRoute(
                  name: "areas",
                  template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");               
            });

但Razor Page并不会调用这个路由规则,在无法确定路由规则的情况下,生成的链接就是空白的。因此,要解决此问题,需要添加针对Razor Page的路由规则:

            //使用带模型的Razor Page时需要配置
            app.UseEndpoints(endpoints =>
            {
                //用于生成asp-action、asp-action等链接标签,没有配置此项则生成时空白
                endpoints.MapControllerRoute(
                   name: "default",
                   pattern: "{controller=Home}/{action=Index}/{id?}");

                endpoints.MapRazorPages();
            });

添加此段之后即可正常生成了。

但还有一个问题,MVC的页面都在Views开头的文件夹里,使用代码生成器生成的也是,而Razor Page则是放在以Pages开头的文件夹里,如果项目里混用了两种方式来开发,则文件分分布在不同的地方,管理起来就比较混乱了。

解决起来也很简单,在ConfigureServices里配置服务时指定Razor Page的位置即可:

services.AddRazorPages().WithRazorPagesAtContentRoot();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello World,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值