razor 命名处理程序和 BindProperty

razor named handler and BindProperty

我正在尝试向 razor 页面发送 ajax post 请求。此剃刀页面有一些 public 属性与 [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?

谢谢!

来自 Razor Pages 中 AJAX-initiated 请求的错误请求响应通常是缺少请求验证令牌的症状,您需要将其作为表单值或 header 包括在内,具体取决于您提出的请求类型。如果你发帖JSON,你需要加一个header:

$.ajax({
    type: "POST",
    headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
    url: "/yourformhandler",
    ...

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

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