2013-11-04 106 views
2

動態地列出模型我有下面的代碼,我想選擇的值添加到列表model.SelectedPayCodes每次用戶從下拉菜單中選擇並點擊「添加」添加項目通過AJAX

控制器

[HttpPost] 
public PartialViewResult AddPayCode(ReferralModel model, string SelectedPayCode) 
{ 
    var payCode = _employeeService.GetPayCodeById(Convert.ToInt32(SelectedPayCode)); 

    model.Add(payCode); 
    return PartialView("_PayCodesPartial",model); 
} 

模型

public class ReferralModel 
    { 
     public Customer Customer { get; set; } 
     public Employee Employee { get; set; } 
     public List<PayCode> PayCodes { get; set; } // List of paycodes 
     public List<PayCode> PayCodesList { get; set; } // List of 'selected' paycodes 
     public SelectListItem SelectedPayCode { get; set; } // current selected paycode 

     public Referral Referral { get; set; } 

     public ReferralModel() 
     { 
      PayCodesList = new List<PayCode>(); 
     } 

     // Step 3 - Add Paycode is done here. 
     public void Add(PayCode payCode) 
     { 
      PayCodesList.Add(payCode); 
     } 
    } 

VIEW - Create.cshtml

@using (Ajax.BeginForm("AddPayCode", "Referral", 
    new AjaxOptions() 
    { 
     HttpMethod = "POST", 
     InsertionMode = InsertionMode.InsertAfter, 
     UpdateTargetId = "PayCodes", 
    })) 
    { 
     @Html.AntiForgeryToken() 
     @Html.ValidationSummary() 
     <!-- payCodes input--> 
     <div class="control-group col-lg-6"> 
      <label class="control-label">Product</label> 
      <div class="controls"> 
       <!-- Step 1 + Choose PayCode Here --> 
       @Html.DropDownListFor(model => model.SelectedPayCode, new SelectList(Model.PayCodes.ToList(), "Id", "Description"), "- Select -") 
       <input type="submit" value="Add" /> 

      </div> 
     </div> 

     <!-- pay codes list --> 
     <div id="PayCodes"> 
     </div> 
    } 

VIEW - _PayCodesPartial.cshtml

@model Zenwire.Models.ReferralModel 

@if (Model.PayCodesList != null) 
{ 
    foreach (var item in Model.PayCodesList) 
    { 
     string.Format("{0} - {1}", item.Code, item.Description); 
    } 
} 

這個問題似乎是每當一個新的項目添加列表爲空一次不保留它的前一個選擇。

+0

您沒有將當前列表的值從視圖添加到模型中。你只是添加最新的價值。 – WannaCSharp

+0

我該如何解決這個問題? – devfunkd

+0

您可以將值保存在數據庫中。 – WannaCSharp

回答

2

試試這個。我使用會話狀態

public PartialViewResult AddPayCode(ReferralModel model, string SelectedPayCode) 
    { 
     var payCode = _employeeService.GetPayCodeById(Convert.ToInt32(SelectedPayCode)); 

     model.PayCodesList = GetPayCodes(); 
     model.Add(payCode); 
     Session["paycodes"] = model.PayCodesList; 
     return PartialView("_PayCodesPartial",model); 
    } 

    private List<PayCode> GetPayCodes() 
    { 
     List<PayCode> payCodes = (List<PayCode>)Session["paycodes"]; 
     if (payCodes == null) 
     { 
      payCodes = new List<PayCode>(); 
      Session["paycodes"] = paycode; 
     } 
     return payCodes; 
    } 
+0

嘗試引用'System.Web' – WannaCSharp

相關問題