在具有Razor页面的ASP.NET核心Webb应用程序中,是否可以通过url和post方法发送一些值?我知道在MVC中您会使用HttpPost方法,但在.Net核心中是不可能的。
例如,在js文件中,我有一个接收参数a的函数:
function redirect(a)
{
$.ajax({
type: 'POST',
url: './MyPage', //I also tried @Url.Page("SetValue")'
dataType: 'int',
data: { a },
});
}我希望能够将这个值发送给我的Razor页面,如下所示:
public void OnPostSetValue(int a)
{
Debug.WriteLine(a); //here I will use the value
}但是我得到了以下错误:“加载资源失败:服务器响应状态为500 () https://localhost:44350/MyPage”
我知道这可能不是这样做的,但我只找到了MVC的例子。在Asp.Net核心有任何方法可以做到这一点吗?
发布于 2020-08-03 06:27:33
但是我得到了以下错误:“加载资源失败:服务器响应状态为500 () https://localhost:44350/MyPage”
--您可以在Asp.Net内核中使用Razor .
首先,在ajax中的post method name中没有指定特定的url。
其次,在使用ajax在Razor页面中传递参数时,@Html.AntiForgeryToken()有一个特殊的要求,必须自己提供防伪令牌,这意味着我们需要在页面视图中添加headers,然后在ajax中添加headers来传递防伪令牌。
有关更多细节,请参阅这。
以下是完整的示例:
@page
@model WebApplication_razorpage_new.Pages.MyPageModel
@{
ViewData["Title"] = "MyPage";
Layout = "~/Pages/Shared/_Layout.cshtml";
}
@Html.AntiForgeryToken()
<input id="Button1" type="button" value="button" onclick="redirect(1)" />
@section Scripts{
<script>
function redirect(a) {
$.ajax({
type: 'POST',
url: '@Url.Page("MyPage", "SetValue")',
dataType: 'int',
data: {a},
headers: {
RequestVerificationToken: $('input:hidden[name="__RequestVerificationToken"]').val()
}
});
}
</script>
}https://stackoverflow.com/questions/63206779
复制相似问题