【发布时间】:2019-08-27 03:46:07
【问题描述】:
在我的 .net core razor 页面项目中,我想从 cshtml 输入调用服务器端方法,而无需重新加载页面。我仍然是剃刀页面的新手。
.cshtml :
input type="submit" id="AddCart" asp-page-handler="AddToCart" hidden
Some JS to .click() the input.
.cs :
public async void OnPostAddToCart()
{
//code
}
到目前为止,我还没有找到阻止页面重新加载并仍然访问我的服务器端方法的方法。
谢谢
编辑: 查看 brad 提供的链接,我设法使它工作。
我添加了@Page "{handler?}" 来编写没有处理程序的 url(不确定它是否对 ajax 重要), 我将我的 ajax url 设置为“thePage/theMethod”, 我用 [ValidateAntiForgeryToken] 装饰了我的剃须刀控制器类 并提到了ajax中的防伪令牌:
$.ajax({
url: "/mainPage/AddToCart",
type: "POST",
contentType: "application/json; charset=utf-8",
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
success: function () {
alert("success");
},
complete: function () {
alert("complete")
},
failure: function () {
alert("failure");
}
});
【问题讨论】:
-
目前仅靠 razor 页面无法做到这一点,您必须使用 AJAX。
-
或者你可以试试Blazor,如果你有足够的勇气使用最前沿的实验框架;)
-
请参阅stackoverflow.com/questions/46410716/… 了解有关回调剃须刀页面的更多信息
标签: c# html asp.net-core razor-pages