2017-08-31 116 views
0

方案麻煩從數據庫

填充編輯複選框或下拉列表中有值我有利用jQuery的中繼這樣我可以保持在這種情況下,資質記錄添加記錄的問題。

問題

我遇到的問題是,我不能得到一個是/否下拉或複選框的工作或顯示它從數據庫中讀取值。正如你所看到的,從屏幕截圖我不能選擇值顯示在我的下拉列表中的「否」,如果選擇了true,我將無法讓我的複選框被選中「打勾」

評論代碼區顯示了我用過的一些方法,正如你所看到的,我不能完全綁定act(因爲它是另一個類的一部分,所以我不能說「Model.historyLead」或者Model.act .historyLead。 我返回所有其他值,但它只是複選框或下拉列表不起作用。 我非常感謝任何幫助解決這個問題。 問候

enter image description here

我的編輯視圖

 @foreach (var item in Model.act) 
{ 
    <div data-repeater-item class="mt-repeater-item"> 
     <div class="mt-repeater-input"> 
       <label>Institution</label> 
        <input type="text" class="form-control" name="hisotryInput" value="@item.hisotryInput" /> 
     </div> 

       <div class="mt-repeater-input"> 
        <label>Description</label>            
          <div class="col-md-10">               
           @Html.TextArea("hisotrydescrip",item.hisotrydescrip, new { @class = "form-control", cols = 50, @rows = 5,@style="width:290px" })                
          </div> 
       </div> 

       <div class="mt-repeater-input"> 
        <label>Lead Consultant?</label> 
         @*@Html.DropDownList("historyLead", null, String.Empty, new { @class = "form-control ", @Value = @item.historyLead })*@ 
         @*@Html.CheckBox("historyLead", new { htmlAttributes = new { @class = "form-control",@[email protected] } })*@ 
         <input type="checkbox" class="form-control" name="historyLead" [email protected] /> 
           @*<select name="historyLead" > 
            <option value="volvo">Volvo</option> 
            <option value="saab">Saab</option> 
            <option value="vw">VW</option> 
            <option value="audi" selected>Audi</option> 
           </select>*@ 
        </div> 

和型號使用

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.ComponentModel.DataAnnotations; 
using System.Linq; 
using System.Web; 

namespace CARICAD_App.Models 
{ 
    public class repeatViewModel 
    { 
     [Display(Name = "textinput")] 
     public string textinput { get; set; } 





    } 

    public class CON_consultantInfoVM 
    { 

     [DisplayName("Age Range")] 
     public Nullable<int> ageRange { get; set; } 
     public int id { get; set; } 
     [DisplayName("Image")] 
     public string image { get; set; } 
     [DisplayName("Consultant ID")] 
     public string consultID { get; set; } 
     [DisplayName("First Name")] 
     [Required] 
     public string firstName { get; set; } 

... 
     public REF_country REF_country { get; set; } 
     public REF_nationality REF_nationality { get; set; } 

     public List<actVm> act { get; set; } 
    } 

    public class actVm 
    { 
     public Nullable<int> id { get; set; } 
     public string consultID { get; set; } 
     public string textinput { get; set; } 
     public string untypedinput { get; set; } 

     public string dateinput { get; set; } 
     public string textareainput { get; set; } 
     public string radioinput { get; set; } 

     public string selectinput { get; set; } 
     public string activities { get; set; } 
     public string hisotryInput { get; set; } 
     public string historydateinput { get; set; } 
     public string hisotrydescrip { get; set; } 
     public string historydateinputTo { get; set; } 
     public string historyLead { get; set; } 
     public bool historyCo { get; set; } 
     public List<string> multipleselectinput { get; set; } 
    } 
} 
+3

在問題中包含你的代碼,而不是它的圖像。 –

+0

@StephenMuecke新增了它,但主要是爲了顯示我的模型循環 – Niana

+0

您的複選框沒有任何意義。如果'historyLead'的初始值是'「No」',那麼它會生成'value =「No」',所以如果它被選中,它會回傳'「No」',如果它沒有被選中,它將不會回傳任何東西。同上是初始值是'「是」'如果勾選,它會回傳'「是」'如果沒有選中則回覆。 –

回答

0

嘗試添加checked屬性,當你的條件爲真部分:

<input type="checkbox" name="historyLead" value="@item.historyLead" @(item.historyLead== "Yes" ? "checked='checked'" : "") class="form-control" /> 

你也可以一個布爾屬性添加到您的視圖模型,然後使用CheckBoxFor如圖here

0

你誤會複選框是如何工作的。

  1. 複選框Value被髮送到服務器時,檢查
  2. 如果複選框未選中任何Value被髮送到服務器

有了這兩條規則,你可以說,Value應該Yes如此如果選中,它會將Yes的值回傳給服務器。如果未選中,則可以添加一些邏輯​​。

但我建議更改屬性historyLeadBoolean並將複選框的值設置爲True。由於默認值,如果未選中,它將變爲False