2013-04-15 32 views
0

所以,我有一個觀點是這樣的:如何將它變成複選框?

@model Tuple<LocApp.Models.Location, LocApp.Models.Service> 

@{ 
    ViewBag.Title = "Create"; 
} 

<h2>Create</h2> 

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>Location</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Item1.name) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Item1.name) 
      @Html.ValidationMessageFor(model => model.Item1.name) 
     </div> 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.Item1.active) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Item1.active) 
      @Html.ValidationMessageFor(model => model.Item1.active) 
     </div> 

     @Html.CheckBoxFor(model => model.Item2.id) 


     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

而行:@Html.CheckBoxFor(model => model.Item2.id) IMO是假設經過與數據庫中的每個服務創建基於ID的複選框,這樣我就可以節省ID 。如何,顯然我必須傳入一個布爾值?我唯一擁有的是model.Item2.active

想法?

回答

0

CheckBoxes只能有布爾狀態:Checked或Unchecked。您的模型必須使用布爾值true或false來設置複選框狀態。如果您希望您的複選框充當將Id保存到數據庫的機制,則需要編寫業務邏輯以檢查是否在控制器操作中選中了複選框。如果複選框被選中,寫入Id,否則不要寫入Id。

+0

好的,我瞭解業務邏輯方面,所以我假設我必須在我的模型中創建檢查的布爾? – TheWebs

+0

如果您要從數據庫加載複選框狀態,則需要爲模型添加選中狀態。否則,您可以遍歷表單值並查看是否在表單POST上檢查了特定的複選框。 –

0

你應該有一個bool model.Item1.checked(或主動,啓用等),然後使用它來代替model.Item1.id,它會跟蹤該標記是否打開或關閉該項目。

然後,當他們發佈表單時,您可以循環(或使用LINQ)所有項目,併爲每個具有.checked = true的項目保存id。

+0

好的。這是有效的,如果我可以稍微擴展一下,我有6或7個服務,我只能得到一個複選框....這是另一個問題的東西,或者你也可以回答嗎? – TheWebs