.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 ...
随机推荐
- 用Helm3构建多层微服务
Helm是一款非常流行的k8s包管理工具.以前就一直想用它,但看到它产生的文件比k8s要复杂许多,就一直犹豫,不知道它的好处能不能抵消掉它的复杂度.但如果不用,而是用Kubectl来进行调式真的很麻烦 ...
- Sql server中用现有表中的数据创建Sql的Insert插入语句
之前,在Codeproject发表过一篇关于用现有表中数据创建Insert的Sql语句的存储过程,今天将其搬到这里来,注意本存储过程仅适用于SQL SERVER. 介绍 一些时候,你想导出一些现有表中 ...
- 前端vue实现pdf文件的在线预览
3.前端vue实现pdf文件的在线预览 我是通过 <iframe> 标签就可以满足我工作的 pdf预览需求 如果<iframe> 无法满足需求 , 可以使用pdf.js这个插件 ...
- supersocket/SocketEngin/BootstrapFactory.cs 详解
using System; using System.Collections.Generic; using System.Linq; using System.Text; using SuperSoc ...
- 如何解决jpa 要求column 名称单词必须用下划线
[转]:http://www.jeesns.cn/article/detail/6657 先引出轮子http://blog.csdn.net/54powerman/article/details/76 ...
- 【开发记录】Linux常用命令记录(一)
记录CentOS下,常用的命令.有时候很难记得清楚,同时方便新来的同学查阅.(将不停的追加和完善) 1)查看CPU情况 cat /proc/cpuinfo |grep "model name ...
- Python如何爬取实时变化的WebSocket数据
一.前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据.股市实时数据或币圈实时变化的数据.如下图: Web 领域中,用于实现数据'实时'更新的手段有轮询和 WebSo ...
- ASP.NET Core 选项模式源码学习Options Configure(一)
前言 ASP.NET Core 后我们的配置变得更加轻量级了,在ASP.NET Core中,配置模型得到了显著的扩展和增强,应用程序配置可以存储在多环境变量配置中,appsettings.json用户 ...
- where 和having 的区别
where : 约束声明,在查询结果返回之前对数据库中的查询条件进行约束 其后不能写聚合函数 having 过滤声明,在查询结果返回之后进行过滤,
- 成功build Maven但eclipse中依然显示该工程有错误
在mac pro的控制台中,成功执行 mvn package,但该工程在eclipse仍然显示有错误. 解决办法:右键该工程 -> Maven -> Update project,勾选 F ...