2010-07-02 43 views
0

這是個好主意,移動複選框檢查邏輯出了標記,特別是「檢查=‘選中’」聯腳本如方框內打勾,

<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

你應該幾乎從不使用JavaScript內聯。因此,將內聯代碼放在一起是非常好的主意。 – Mark 2010-07-02 20:20:58

+0

這是內聯的ASP不是JavaScript。但Html.CheckCheckboxes返回JavaScript – DogSuitGir 2010-07-02 20:23:13

回答

2

我不同意這種方法。如果你不需要,我不會依賴JavaScript。它可能不是可能的,但有幾個原因可能失敗:

  • 用戶有JS禁用
  • 頁面上的其他JS錯誤阻止腳本處理
  • 用戶從訪問您的站點不支持腳本的移動設備

HTML只是安全的。在我看來,這引入了以前不存在的潛在失敗點。

2

你總是可以使用強類型CheckBoxFor助手,並完全避免這個混亂。從文檔相關位:

返回值
類型:System.Web.Mvc.MvcHtmlString 一個HTML輸入元件,其類型屬性被設置爲「複選框」用於由表示對象中的每個屬性指定的表達式。