将复选框检查逻辑移出标记是否是一个好主意,特别是'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));
%>
如果这不是一个好主意,为什么不呢?
答案 0 :(得分:2)
我不同意这种做法。如果你不需要,我不会依赖javascript。可能不太可能,但有几个原因导致失败:
HTML非常安全。在我看来,这引入了以前不存在的潜在失败点。
答案 1 :(得分:2)
您可以随时使用强类型CheckBoxFor帮助程序,并完全避免这种混乱。文档中的相关内容:
返回值
键入:System.Web.Mvc.MvcHtmlString 一个HTML输入元素,其type属性设置为“checkbox”,表示由指定表达式表示的对象中的每个属性。