剃刀命名为handler和BindProperty

时间:2018-12-03 20:07:26

标签: asp.net razor asp.net-core asp.net-core-2.1 razor-pages

我正在尝试将ajax发布请求发送到剃须刀页面。此剃刀页面具有[BindProperty]的一些公共属性。对于ajax请求,我尝试使用命名处理程序。

@page "{title}"

[BindProperty]
public BookViewModel BookModel { get; set; }

public IActionResult OnPostMarkdownInput(string title)
{
    return new EmptyResult();
}

在客户端,发送空数据(+ / title)以BadRequest结尾。但是以绑定BookModel的形式发送它是可行的。因此,我怀疑[BindProperty]要求甚至为namedHandler都绑定此属性。但是,即使将其删除,问题仍然存在。

如何添加不需要绑定任何属性的namedHandler?还是为什么在没有数据发送时收到BadRequest?

谢谢!

1 个答案:

答案 0 :(得分:1)

Razor页面中AJAX发起的请求中的错误请求响应通常是缺少请求验证令牌的症状,根据您所发出的请求的类型,您需要将其包括为表单值或标头。如果要发布JSON,则需要添加标题:

type: 'radar',
data: {...},
options: {
    scale: {
        ticks: {
            reverse: true,
            beginAtZero: false,
            min: 1
        }
    }
}

否则,您只需要确保隐藏的字段包含在发布的值中即可。

在此处查看有关请求验证的更多信息:https://www.learnrazorpages.com/security/request-verification