Asp.net mvc ASP.NET MVC新手-默认登录页面“记住我”复选框

Asp.net mvc ASP.NET MVC新手-默认登录页面“记住我”复选框,asp.net-mvc,Asp.net Mvc,在Visual Studio 2008中启动ASP.NET MVC项目时,您将获得一个完全加载的站点模板,包括登录表单等。在登录的默认表单中,您将在标记中找到它 <%= Html.CheckBox("rememberMe") %> 当您在浏览器中查看源时,您将看到这将渲染为 <input id="rememberMe" name="rememberMe" type="checkbox" value="true" /> <input name="remember

在Visual Studio 2008中启动ASP.NET MVC项目时,您将获得一个完全加载的站点模板,包括登录表单等。在登录的默认表单中,您将在标记中找到它

<%= Html.CheckBox("rememberMe") %>

当您在浏览器中查看源时,您将看到这将渲染为

<input id="rememberMe" name="rememberMe" type="checkbox" value="true" />
<input name="rememberMe" type="hidden" value="false" />


此隐藏字段的用途和默认值是什么?这有什么原因吗?对我来说毫无意义。

这是来自ASP.NET MVC来源的评论:

// Render an additional <input type="hidden".../> for checkboxes. This
// addresses scenarios where unchecked checkboxes are not sent in the request.
// Sending a hidden input makes it possible to know that the checkbox was present
// on the page when the request was submitted.
//为复选框呈现一个附加值。这
//解决在请求中未发送未选中复选框的情况。
//发送隐藏的输入可以知道复选框存在
//在提交请求时的页面上。

简而言之:未选中的复选框(值)不会在请求中发送。如果复选框未选中,则隐藏输入的值将在请求中发送。

谢谢您的回答!不过,这真是太愚蠢了。如果请求中没有发送复选框值,为什么不能假定它未选中?如果出于任何原因,复选框的可见性是有条件的,而这实际上与您的逻辑相关(我想不出任何原因),为什么您不能在后续文章中使用相同的条件?这真让我恼火;它搞乱了复选框上的CSS相邻同级选择器(以不同的方式设置标签),因为现在我有了这个隐藏字段,它只在0.5%的场景中有用。。。糟糕。而且,我认为他们把默认值搞错了!我相信复选框是“开”的,而不是“真的”。