.net core web项目入门

本文介绍如何在Razor页面中实现路由配置与不同类型的请求处理,包括GET和POST请求,并提供禁用防卫令牌验证的方法,以解决400错误问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目启动页面的是Pages文件夹下的Index.chtml文件

razor视图,在做页面跳转的,对于跳转到html,只能将html放在静态文件下,也就是wwwroot文件夹下面。

发送请求到razor page时,遵守如下规范
前端:
url: "/MyOwn?handler=HelloWorld"
MyOwn是页面名称,若在子文件下,则是/folder/MyOwn
handler是固定写法,后面的参数是方法的名称,如MVC中action的名称
后端:
    public class MyOwnModel : PageModel
    {
        public async Task<ActionResult> OnPostHelloWorldAsync(string password)
        {
            return new JsonResult("登录成功");
        }
    }

后端:
    public class MyOwnModel : PageModel
    {
        public async Task<ActionResult> OnPostHelloWorldAsync(string password)
        {
            return new JsonResult("登录成功");
        }
    }
默认遵守规范,OnPostHelloWorldAsync,OnPost是固定写法,表示Post请求,HelloWorld与上面的handler参数相对应,Async是异步写法,可有可无,取决于项目的写法。

对于处理ajax请求的问题:
1.请求razor page,也就是cshtml文件,正常的Get请求是没有问题的,但是使用post,就会出现400的错误,原因是razor使用防卫令牌验证,可以在startup中配置禁用,以下方式是全局禁用,也可部分禁用。
public void ConfigureServices(IServiceCollection services)
        {
            services
                .AddMvc()
                //禁用Razor页面防卫令牌验证
                .AddRazorPagesOptions(o =>
                {
                    o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());

                }).InitializeTagHelper<FormTagHelper>((helper, context) => helper.Antiforgery = false)
                //设置默认路由,当访问时只要写上other,就会自动路由到extras/index下了
                .AddRazorPagesOptions(o =>
                {
                    o.Conventions.AddPageRoute("/extras/index", "other");
                });
        }
2.请求控制器,请求控制器需要配置路由,否则也是400错误
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseBrowserLink();
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
            }
            app.UseStaticFiles();
            //app.UseMvc();
            //定义控制器的路由,否则不能发送请求到控制器
            app.UseMvc(route =>
            {
                route.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
            });
            //app.UseMvcWithDefaultRoute();
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值