复选框检查

时间:2010-07-02 20:17:38

标签: asp.net jquery forms webforms

将复选框检查逻辑移出标记是否是一个好主意,特别是'checked =“checked”'内联脚本,例如

<input type="checkbox" name="LikesWork" <%= Model.LikesWork ? "checked=\"checked\"" : "" %> />

并将其替换为一些代码,该代码将带有javascript(jQuery)选择器的字典作为键,将bool作为值。然后通过javascript检查复选框,简化标记。

<input type="checkbox" name="LikesWork" />

...

<%
Dictionary<string, bool> checkElements = new Dictionary<string, bool>();
checkElements.Add("#likesWork", Model.Account.LikesWork);
Response.Write(Html.CheckCheckboxes(checkElements));    
%>

如果这不是一个好主意,为什么不呢?

2 个答案:

答案 0 :(得分:2)

我不同意这种做法。如果你不需要,我不会依赖javascript。可能不太可能,但有几个原因导致失败:

  • 用户已停用JS
  • 页面上的另一个js错误会阻止您的脚本处理
  • 用户从不支持您脚本的移动设备访问您的网站

HTML非常安全。在我看来,这引入了以前不存在的潜在失败点。

答案 1 :(得分:2)

您可以随时使用强类型CheckBoxFor帮助程序,并完全避免这种混乱。文档中的相关内容:

  

返回值
  键入:System.Web.Mvc.MvcHtmlString   一个HTML输入元素,其type属性设置为“checkbox”,表示由指定表达式表示的对象中的每个属性。