Asp.net 复选框检查

Asp.net 复选框检查,asp.net,jquery,forms,webforms,Asp.net,Jquery,Forms,Webforms,将复选框检查逻辑移出标记,特别是“checked=“checked””内联脚本(例如 <input type="checkbox" name="LikesWork" <%= Model.LikesWork ? "checked=\"checked\"" : "" %> /> 将其替换为一段代码,该代码使用一个字典,其中javascript(jQuery)选择器作为键,bool作为值。然后,javascript将选中复选框,从而简化标记 <input type=

将复选框检查逻辑移出标记,特别是“checked=“checked””内联脚本(例如

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

将其替换为一段代码,该代码使用一个字典,其中javascript(jQuery)选择器作为键,bool作为值。然后,javascript将选中复选框,从而简化标记

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



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

我不同意这种方法。如果你不必这么做,我就不会依赖javascript。这可能不太可能,但这可能失败的原因有几个:

  • 用户已禁用JS
  • 页面上的另一个js错误阻止处理脚本
  • 用户正在从某种不支持您的脚本的移动设备访问您的站点

HTML是安全的。在我看来,这引入了一个以前不存在的潜在故障点

我不同意这种做法。如果你不必这么做,我就不会依赖javascript。这可能不太可能,但这可能失败的原因有几个:

  • 用户已禁用JS
  • 页面上的另一个js错误阻止处理脚本
  • 用户正在从某种不支持您的脚本的移动设备访问您的站点

HTML是安全的。在我看来,这引入了一个以前不存在的潜在故障点

您始终可以使用强类型助手,完全避免这种混乱。文件中的相关bit:

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


您可以始终使用强类型帮助器,完全避免这种混乱。文件中的相关bit:

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


您几乎不应该使用javascript内联。所以去掉内联代码是一个非常好的主意。这是内联ASP而不是javascript。复选框返回javascript,但您几乎不应该内联使用javascript。所以去掉内联代码是一个非常好的主意。这是内联ASP而不是javascript。但是,Html.checkbox返回javascript
<%
Dictionary<string, bool> checkElements = new Dictionary<string, bool>();
checkElements.Add("#likesWork", Model.Account.LikesWork);
Response.Write(Html.CheckCheckboxes(checkElements));    
%>