首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET-带有Razor页面的核心web应用程序在Post方法上发送值

ASP.NET-带有Razor页面的核心web应用程序在Post方法上发送值
EN

Stack Overflow用户
提问于 2020-08-01 15:13:30
回答 1查看 1.8K关注 0票数 0

在具有Razor页面的ASP.NET核心Webb应用程序中,是否可以通过url和post方法发送一些值?我知道在MVC中您会使用HttpPost方法,但在.Net核心中是不可能的。

例如,在js文件中,我有一个接收参数a的函数:

代码语言:javascript
复制
function redirect(a)
{
    $.ajax({
      type: 'POST',
      url: './MyPage', //I also tried @Url.Page("SetValue")'
      dataType: 'int',
      data: { a },
   });
}

我希望能够将这个值发送给我的Razor页面,如下所示:

代码语言:javascript
复制
public void OnPostSetValue(int a)
{         
    Debug.WriteLine(a); //here I will use the value       
}

但是我得到了以下错误:“加载资源失败:服务器响应状态为500 () https://localhost:44350/MyPage”

我知道这可能不是这样做的,但我只找到了MVC的例子。在Asp.Net核心有任何方法可以做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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来传递防伪令牌。

有关更多细节,请参阅

以下是完整的示例:

代码语言:javascript
复制
@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>
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63206779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档