1

我在服务器端有一个代码:

@Html.EditorFor(m => m.RememberMe)

RememberMe是我模型的布尔字段。和呈现的 HTML:

<input class="check-box" data-val="true" data-val-required="The Remember Me ? field is required." id="RememberMe" name="RememberMe" type="checkbox" value="true" />
<input name="RememberMe" type="hidden" value="false" />

有一个相同的隐藏字段name="RememberMe"。我不知道这个隐藏字段的原因和目的是什么。

当我在服务器端调试并选中复选框时,模型已正确映射。我得到了:myModel.RememberMe = true。但是当我检查Request["RememberMe"]. 我看到了"true,false"false必须来自隐藏字段,因为它们具有相同的名称。

我的问题是:

  • false导致问题吗?
  • 为什么 asp.net mvc 会呈现这样的隐藏字段?
  • 如果隐藏字段不是必需的。我怎样才能摆脱它?我认为最好只"true"Request["RememberMe"].

谢谢

4

1 回答 1

1

假的会不会出问题?

false 不会引起任何问题,但是由于您呈现 not null 这意味着您的 RememberMe 设置为 bool 而不是 nulabble 公牛,因此如果未检查答案,它将是错误的

为什么 asp.net mvc 会呈现这样的隐藏字段?

因为如果您查看您的 html,您不能有两个值,它要么是真要么是假,但由于 null 不是答案,因此添加了隐藏字段来保存 false 的值value="false"

如果隐藏字段不是必需的。我怎样才能摆脱它?我认为最好只为Request["RememberMe"].

除非您真的认为这是一个问题,否则您可能不得不编写自己的复选框助手,因为据我所知,使用的复选框助手不会接受可空值作为输入

于 2013-07-03T04:05:57.293 回答