模型绑定来自 Razor 页面发布表单上的路由参数

Posted

技术标签:

【中文标题】模型绑定来自 Razor 页面发布表单上的路由参数【英文标题】:Model Binding from Route Parameter on Posted Form for Razor Page 【发布时间】:2021-09-17 11:13:25 【问题描述】:

我有以下 Razor 页面设置:

[BindProperties]
public class MyFormPageModel : PageModel

    public int Id  get; set; 

    public void OnGet()

    public IActionResult OnPost() 
       return RedirectToPage("Index", new Id);
    

还有:

@page "Id:int?"

<form method="post">
   <button type=submit>Submit</button>
</form>

如果我访问/MyForm/1,表单+按钮会加载。

点击按钮成功发帖到/MyForm/1

但这只会从后端产生 400 错误。

后端的输出日志中也没有显示错误。

【问题讨论】:

你有av索引页吗?我在这里看不到任何东西 【参考方案1】:

找到我的问题。

在这种情况下没有生成防伪令牌,因为表单是动态生成的。

如果你从一开始就在 Razor .cshtml 中有一个&lt;form&gt;,Razor 会自动生成防伪令牌,但一旦你的表单是动态生成的,它就不起作用。

此页面为我的问题提供了一些出色的解决方案: https://exceptionnotfound.net/using-anti-forgery-tokens-in-asp-net-core-razor-pages/

【讨论】:

以上是关于模型绑定来自 Razor 页面发布表单上的路由参数的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 中的模型绑定

为啥此模型绑定在 Razor 页面中不起作用

来自 JQuery 填充字段的值未绑定到 MVC 模型

Razor 页面 .Net 核心显示来自页面模型的 base64 图像

Razor 页面中绑定查询参数的规则

如何更改绑定到 Razor 页面上模型的特定文本的字体颜色?