2014-09-29 181 views
1

我想从一个从数据库填充的下拉列表中获取选定的值。该列表填充罚款和让我选择一个值,但是当我点击提交按钮,我得到一个错误,该清单“未设置为一个对象的实例”从DropdownList中选择的值

这是我的观点:

@model LoanRequestRowViewModel 

<h2>CreateTest</h2> 
<div> 
    @using (@Html.BeginForm()) 
    { 
     <div> 
      <span class="inline-block"> 
       @Html.LabelFor(model => model.LoanPurpose) 
       @Html.DropDownListFor(model => model.LoanPurposeId, Model.LoanPurpose) 

      </span> 

      <span class="inline-block"> 
       @Html.LabelFor(model => model.AmountRequested) 
       @Html.TextBoxFor(model => model.AmountRequested) 
      </span> 
      <span class="inline-block"> 
       @Html.LabelFor(model => model.RequestedRate, new { @class = "control-label" }) 
       @Html.TextBoxFor(model => model.RequestedRate, new { @class = "inputROW" }) 
      </span> 

     </div> 
     <div> 
      <input type="submit" value="Create" /> 
     </div> 
    } 
</div> 

这里是我的控制器:

[HttpGet] 
     [Route("CreateTest")] 
     public async Task<ActionResult> CreateTest() 
     { 
      var loanPurposes = await GetLoanPurposes(); 


      var model = new LoanRequestRowViewModel(); 

      model.LoanPurpose.Add(new SelectListItem { Text = "-Please Select-", Value = "-1" }); 
      foreach (var purpose in loanPurposes) 
      { 
       model.LoanPurpose.Add(new SelectListItem() 
       { 
        Value = purpose.Value.ToString(), 
        Text = purpose.Text.ToString() 
       }); 
      } 

      return View(model); 
     } 
     [HttpPost] 
     [Route("CreateTest")] 
     public async Task<ActionResult> CreateTest(LoanRequestRowViewModel model) 
     { 
      var newLoan = new LoanRequest() 
      { 
       AmountRequested = model.AmountRequested, 
       LoanPurposeId = model.LoanPurposeId 
      }; 

      return View(); 
     } 

这里是型号:

public class LoanRequestRowViewModel 
    { 
     public LoanRequestRowViewModel() 
     { 
      LoanClasses = new List<SelectListItem>(); 
      LoanTypes = new List<SelectListItem>(); 
      LoanPurpose = new List<SelectListItem>(); 
      RateIndex = new List<SelectListItem>(); 
      PaymentPeriod = new List<SelectListItem>(); 
      PaymentType = new List<SelectListItem>(); 
     } 

     public Guid Id { get; set; } 

     public Guid LoanApplicationId { get; set; } 

     public Guid LoanPurposeId { get; set; } 
     public Guid LoanClassId { get; set; } 
     [Display(Name = "Loan Class")] 
     public IList<SelectListItem> LoanClasses { get; set; } 

     public string SelectedLoanClass { get; set; } 


     [Display(Name = "Loan Purpose")] 
     public IList<SelectListItem> LoanPurpose { get; set; } 


     public string SelectedLoanPurpose { get; set; } 

     [Display(Name = "Amount Requested")] 
     public decimal? AmountRequested { get; set; } 

     [Display(Name = "Requested Rate")] 
     public decimal? RequestedRate { get; set; } 

     [Display(Name = "Loan Type")] 
     public IList<SelectListItem> LoanTypes { get; set; } 



     public string SelectedLoanType { get; set; } 

     [Display(Name = "Rate Index")] 
     public IList<SelectListItem> RateIndex { get; set; } 

     public Guid SelectedRateIndex { get; set; } 

     [Display(Name = "Origination Fee")] 
     public decimal? OriginationFeePercentage { get; set; } 

     [Display(Name = "Variable Rate Margin")] 
     public decimal? VariableRateMargin { get; set; } 

     [Display(Name = "Variable Rate Floor")] 
     public decimal? VariableRateFloor { get; set; } 

     [Display(Name = "Variable Rate Ceiling")] 
     public decimal? VariableRateCeiling { get; set; } 

     [Display(Name = "Payment Type")] 
     public IList<SelectListItem> PaymentType { get; set; } 


     public string SelectedPaymentType { get; set; } 

     [Display(Name = "Payment Period")] 
     public IList<SelectListItem> PaymentPeriod { get; set; } 


     public int? SelectedPaymentPeriod { get; set; } 

     [Display(Name = "Number of Payments")] 
     public int? NumberOfPayments { get; set; } 

     [Display(Name = "Amortization Term")] 
     public decimal? AmortizationTerm { get; set; } 

任何援助 不胜感激!

+0

你可以发布你的模型和你得到错误的属性? – Floremin 2014-09-29 18:17:57

+3

您可以在视图中有错误吗?在您的post方法中,您将再次返回View,而不传递模型实例(因此模型实例将为null) – 2014-09-29 18:22:40

+0

@ DanielJ.G。是对的。这是问题所在。请通过模型查看。 – ramiramilu 2014-09-29 18:29:10

回答

0

在你看来,你期待一个带有信息的视图模型,但是你什么也没有返回到视图。

@Html.DropDownListFor(model => model.LoanPurposeId, Model.LoanPurpose) 

要求填写贷款用途清单。

但是,因为模型为null,它只是崩溃。

为了解决这个问题,你需要通过模型的新实例:LoanRequestRowViewModel

此外,我会采取考虑重新命名:Model.LoanPurpose。它听起来只是返回一个属性,而不是项目列表。

+0

我无法重命名任何模型,无论如何,我感谢您的帮助。问题在于LoanPurposeId是一个Guid。我使用了“SelectedPurposeId”这是一个字符串,现在一切正常。去搞清楚。 – BeeDev 2014-09-30 17:10:26

相关问题