.NET Core Razor Pages中ajax get和post的使用
ASP.NET Core Razor Pages Web项目大部分情况下使用继承与PageModel中的方法直接调用就可以(asp-page),但是有些时候需要使用ajax调用,更方便些。那么如何使用ajax调用呢??
1.Razor Pages普通页面的跳转
<a asp-page="About">About</a>
<form asp-page="./Index" method="get">
<div class="form-actions no-color">
<p>
Find By Name:
<input type="text" name="searchString" value="@Model.CurrentFilter" />
<input type="submit" value="Search" class="btn btn-primary" />|
<a asp-page="./Index">Back to full list</a>
</p>
</div>
</form>
form默认为post提交,asp-page跳转的页面,首先获取的是get方法,如:OnGetAsync或者OnGet,同时存在运行会报错
2. 针对一个页面的多个按钮处理
<form method="POST">
<div>Name: <input asp-for="Customer.Name" /></div>
<input type="submit" asp-page-handler="JoinList" value="Join" />
<input type="submit" asp-page-handler="JoinListUC" value="JOIN UC" />
</form>
指向当前页面的JoinList方法和JoinListUC方法,增加了handle,将跳转到OnPost[handler]Async方法。
3. Razor Pages中ajax的Get使用
$.get("?handler=Filter", { id: $(this).attr("data-id") },
function (result) {
console.log(result);
});
$.ajax({
type: 'GET',
contentType: "application/json",
dataType: "json",
url: "?handler=Filter",
success: function (result) {
alert(result);
}
});
跳转到OnGetFilterAsync方法,url写的需要注意(handler=)就可以了
4. Razor Pages中ajax的Post使用
Razor Pages 由防伪造验证保护,FormTagHelper 将防伪造令牌注入 HTML 窗体元素,防止跨站点请求伪造 (XSRF/CSRF)。
XSS:跨站脚本(Cross-site scripting,通常简称为XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
CSRF:跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
由于以上的问题,直接ajax post请求会出错,错误这里就不贴图了。
解决办法1:推荐
1. ***.cshmtl你的页面增加
@Html.AntiForgeryToken()
2. ajax post请求
$.ajax({
url: '?handler=Filter2',
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
data: {"__RequestVerificationToken":$('input:hidden[name="__RequestVerificationToken"]').val()},
success: function (result) {
alert(result);
}
});
解决办法2:
1. Startup.cs中的ConfigureServices方法增加
services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");
2. ***.cshmtl你的页面增加
@Html.AntiForgeryToken()
3. ajax post请求
$.ajax({
url: '?handler=Filter2',
type: 'POST',
contentType: 'application/json; charset=utf-8',
headers: {
"XSRF-TOKEN":$('input:hidden[name="__RequestVerificationToken"]').val()
},
success: function (result) {
alert(result);
}
});
解决方法3:不推荐
1. Startup.cs中的ConfigureServices方法增加
services.AddRazorPages().AddRazorPagesOptions(o=> { o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute()); });
2. ajax post请求
$.ajax({
url: '?handler=Filter2',
type: 'POST',
contentType: 'application/json; charset=utf-8',
success: function (result) {
alert(result);
}
});
.NET Core Razor Pages中ajax get和post的使用的更多相关文章
- Asp.Net Core Razor页面中使用echarts展示图形
Asp.Net Core Razor页面中使用echarts展示图形 要在Razor页面中使用echarts显示图形,主要问题点在于如何将数据传递给js文件. 1,下载安装echarts库文件 首先引 ...
- ASP.NET Core Razor Pages
Razor 页面是Asp.Net Core2.0新增的一个功能.Razor 页面是 ASP.NET Core MVC 的一个新特性,它可以使基于页面的编码方式更简单高效. 环境:vs2017 .net ...
- ASP.NET Core Razor Pages 初探
最近新建 Asp.net Core MVC 项目的时候不小心选错了个模板,发现了一种新的项目模板.它使用cshtml视图模板,但是没有Controller文件夹.后来才发现这是ASP.NET Core ...
- 【翻译】介绍 ASP.NET Core 中的 Razor Pages
介绍 ASP.NET Core 中的 Razor Pages 原文地址:Introduction to Razor Pages in ASP.NET Core 译文地址:介绍 asp. ...
- [译]ASP.NET Core揭秘 - Razor Pages
原文 什么是Razor Pages? Razor pages是ASP.NET Core 2.0的新特性,它被设计用来更快的开发页面,比传统的MVC模式更便捷. 创建项目 为了使用Razor Pages ...
- 如何在ASP.NET Core 2.0中使用Razor页面
如何在ASP.NET Core 2.0中使用Razor页面 DotNetCore2017-11-22 14:49 问题 如何在ASP.NET Core 2.0中使用Razor页面 解 创建一个空的项 ...
- 基于ASP.NET Core 3.0快速搭建Razor Pages Web应用
前言 虽然说学习新的开发框架是一项巨大的投资,但是作为一个开发人员,不断学习新的技术并快速上手是我们应该掌握的技能,甚至是一个.NET Framework开发人员,学习.NET Core 新框架可以更 ...
- 在Asp.net Razor Pages/MVC程序中集成Blazor
今天试了一下在Asp.net core Razor Pages/MVC程序中集成Blazor(Server-side),还是可以完美整合的,这里以Razor Pages为例(.net core 3.1 ...
- Razor Page中的AJAX
1.由于Razor Pages自带提供防伪令牌/验证,用来防止跨站点请求伪造(称为XSRF或CSRF),所以和MVC框架中API使用方式有稍许的不同. 2.所以在我们使用Razor Pages中的fo ...
随机推荐
- C#连接SAP【生产系统与ERP对接】
企业如果上了ERP系统,比如SAP.用友.金蝶或者E10等等,只需要ERP里面提供相应的接口,则可以直接将PMC创建的工单信息抛转至 MTS 系统,当该工单生产完成之后,MTS 将完成数据回传至 ER ...
- Java thinking,What is the result?
interface O { public Integer oc(Integer i); } abstract class A { Integer i; public A(){ this.i = 0; ...
- jquery浅复制和深复制区别
jquery浅复制和深复制区别
- scrapy框架介绍及安装
什么是scrapy框架? scrapy框架的安装 1.windowes下的安装 Python 2 / 3升级pip版本: pip install --upgrade pip 通过pip 安装 Scra ...
- 深度学习解决NLP问题:语义相似度计算
在NLP领域,语义相似度的计算一直是个难题:搜索场景下query和Doc的语义相似度.feeds场景下Doc和Doc的语义相似度.机器翻译场景下A句子和B句子的语义相似度等等.本文通过介绍DSSM.C ...
- ES6之Set
阮大神的es6看了一遍,但是对于Set和Map还是一知半解的,主要还是没怎么用吧,这里总结一下,以后再工作中也要多用用才行 怎么定义set呢?有什么用处? set是ES6中新增的类型,和数组类似,唯一 ...
- python基础-并发编程part01
并发编程 操作系统发展史 穿孔卡片 读取数据速度特别慢,CPU利用率极低 单用户使用 批处理 读取数据速度特别慢,CPU利用率极低 联机使用 脱机批处理(现代操作系统的设计原理) 读取数据速度提高 C ...
- ELK的简单搭建
Environment (都需要Java环境,jdk){ elasticsearch kibana 安装nginx用以测试 logstash } 1.首先拉取软件包,给予Java语言开发首选配置Ja ...
- Java学习笔记1(基础)
计算机语言和Java 计算机语言主要由一些指令(包括数字.符号和语法等)组成,可以分为机器语言.汇编语言.高级语言三大类.Java是一种高级计算机语言,是一种可以编写跨平台应用软件.完全面向对象的程序 ...
- Kafka分区分配策略分析——重点:StickyAssignor
“ 为什么Kafka在RangeAssigor.RoundRobinAssignor的基础上,又新增了PartitionAssignor,它解决了什么问题?” 背景 用过Kafka的同学应该都知道Ka ...