2013-11-03 82 views
1

我試圖將dropdownlist值傳遞給我的控制器,所以我可以將值添加到一個paycodes列表,但我不斷收到「值不能爲空」。錯誤。我的支付代碼列表中有很多項目。不知道什麼是空或錯在這裏...Razor - 通過Ajax.BeginForm將DropDownList選定值傳遞給控制器​​

內部異常

Value cannot be null. 
Parameter name: source 

VIEW

 <!-- products input--> 
     <div class="control-group col-lg-6"> 
      <label class="control-label">Product</label> 
      <div class="controls"> 
       @using (Ajax.BeginForm("AddPayCode", "Referral", 
    new AjaxOptions() 
    { 
     HttpMethod = "POST", 
     InsertionMode = InsertionMode.Replace, 
     UpdateTargetId = "PayCodes", 
     Url = Url.Action("AddPayCode", "Referral") 
    })) 
       { 
        @Html.ValidationSummary() 

        @Html.DropDownListFor(model => model.SelectedPayCode, new SelectList(Model.PayCodes.ToList(), "Id", "Description"), "- Select -") 
        <input type="submit" value="Add" /> 
       } 
      </div> 
     </div> 

控制器

[HttpPost] 
public void AddPayCode(ReferralModel model) 
{ 
    var test = model.SelectedPayCode; 
    //TODO: Add to model.Referral.PayCodes list and return list of selected items 
} 

模型

public class ReferralModel 
{ 
    public Customer Customer { get; set; } 
    public Employee Employee { get; set; } 
    public List<PayCode> PayCodes { get; set; } 
    public int SelectedPayCode { get; set; } 

    public Referral Referral { get; set; } 
} 

域對象

public class Referral 
{ 
    [Key] 
    public int Id { get; set; } 
    public int CustomerId { get; set; } 
    public int EmployeeId { get; set; } 
    public decimal Total { get; set; } 

    public virtual List<PayCode> PayCodes { get; set; } 
    public virtual Customer Customer { get; set; } 
    public virtual Employee Employee { get; set; } 
} 

目的:

  • 用戶從下拉菜單中選擇一個paycode並點擊 「添加」 Paycode是

  • 添加到介PayCodes列表

  • 控制器返回選擇到視圖的付費代碼列表(不是 尚未實施)

+0

異常告訴你什麼是空...但我看不到參數源在問題的任何地方!你應該發佈它! – Fals

+0

我的項目中沒有一個名爲source的參數。這對我來說是如此令人困惑。 – devfunkd

+1

您應該發佈有關異常的更多信息!它何時發生?另一件事,你已經在表單函數中提供post的路由,所以你不需要Url = Url.Action(「AddPayCode」,「Referral」) – Fals

回答

1

問題是控制器缺少下拉列表的屬性。

[HttpPost] 
public void AddPayCode(ReferralModel model, ** string SelectedPayCode ** <-- missing) 
{ 
    var test = SelectedPayCode; 
    //TODO: Add to model.Referral.PayCodes list and return list of selected items 
} 
相關問題