除非属性可用,为什么Request.Form [" myfield"]为空?

时间:2017-12-15 17:23:17

标签: c# razor-pages asp.net-core-tag-helpers

在RazorPage中,我提交了一个表单,但在模型Punctuation中,Request.Form [" myfield"]为空。

OnPost()

但是如果我在模型中添加一个类级属性:

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

并更新表单以使用TagHelper:

public string myfield { get; set; }
当它在OnPost()中遇到断点时填充

<form method="post"> <input asp-for="myfield"/> <button type="submit">Submit</button> </form> 。但Request.Form["myfield"]中的实际属性为空。

有谁知道发生了什么?含义:

为什么没有OnPost()填充类级属性?

为什么不填充该属性?

- 编辑 -
第一部分是因为我使用Request.Form["myfield"]代替id

仍然不确定name和模型属性的第二部分。

1 个答案:

答案 0 :(得分:1)

Razor页面与Web窗体不同,其中表单字段会自动填充。它们更像是一个简化的MVC控制器。

您可以通过将其作为参数添加到post方法来指定传入所有表单字段:

public async Task<IActionResult> OnPostAsync(IFormCollection data) {
   var myField = data["myField"];
   ...
}

使用Bindable属性是在客户端和服务器之间保留数据的首选方法。