我在尝试进行表单提交时遇到了问题。在表单未通过验证的情况下,我按照标准流程调用了
问题在于,HTML.*助手应该在呈现时捕获已发布的值,但我注意到,只有当我将它们包含在回发操作的参数列表中时,我的文本字段才会这样做,这不应该是必需的,因为有些表单具有太多字段,不想将它们全部列出作为参数。
我的操作代码大致如下:
ModelState.AddModelError()
,然后返回一个视图结果。问题在于,HTML.*助手应该在呈现时捕获已发布的值,但我注意到,只有当我将它们包含在回发操作的参数列表中时,我的文本字段才会这样做,这不应该是必需的,因为有些表单具有太多字段,不想将它们全部列出作为参数。
我的操作代码大致如下:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditDataDefinition(long? id, string name)
{
var dataDefinition = ...
// do some validation stuff
if (!ModelState.IsValid)
{
// manually set checkbox fields via ViewData seeing as this STILL doesn't work in MC 1.0 :P
// ...
return View(dataDefinition);
}
}
现在,数据定义(即 LINQ to SQL 实体)有一个字段MinVolume,在视图中由以下行处理:
Minimum: <%= Html.TextBox("MinVolume", null, new { size = 5 })%>
然而,当我们的视图在ModelState验证失败后被呈现时,原始页面中输入的值未被保留,除非我将其作为postback方法的参数包含在内。简而言之,我可以通过以下方式“解决问题”:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditDataDefinition(long? id, string name, string minVolume)
由于某种原因,需要保留字段值。我觉得这很愚蠢,因为我的表单不仅有这个字段,还有其他更多的值,我不应该只为这个字段添加一个参数。
有什么想法吗?