【发布时间】:2018-05-29 22:40:43
【问题描述】:
在 RazorPage 中,我提交了一个表单,但在模型 OnPost() 中,Request.Form["myfield"] 为空。
<form method="post">
<input id="myfield"/>
<button type="submit">Submit</button>
</form>
但是如果我在模型中添加一个类级别的属性:
public string myfield { get; set; }
并更新表单以使用 TagHelper:
<form method="post">
<input asp-for="myfield"/>
<button type="submit">Submit</button>
</form>
Request.Form["myfield"] 在到达 OnPost() 中的断点时被填充。但是OnPost()中的实际属性为null。
有人知道发生了什么吗?含义:
为什么Request.Form["myfield"] 不填充类级别属性?
为什么不填充属性?
-- 编辑--
第一部分是因为我使用的是id 而不是name。
仍然不确定asp-for 和模型属性的第二部分。
【问题讨论】:
-
asp-for还设置了name属性 - 您是否尝试在您的第一个代码 sn-p 中设置它? -
你能提供一个代码 sn-p 看起来像什么吗?没有 asp-name 属性。
-
我的意思是在没有
asp-for的情况下尝试<input id="myfield" name="myfield" />(您的第一个代码示例)。我觉得它消失了name而不是id。 -
你是对的。是名字。这解决了一个问题。您对 asp-for 和 property 问题有任何想法吗?我更新了 OP。
-
尝试添加
BindProperty属性,即[BindProperty] public string myfield { get; set; }。这可能只适用于类,而不是简单的字符串。如果是这种情况,请告诉我,我可以发布一个答案来解释它是如何工作的。
标签: c# razor-pages asp.net-core-tag-helpers