【发布时间】:2017-01-22 15:04:00
【问题描述】:
对 MVC 很陌生。尝试提交包含静态 DropDownListFor 的表单时出现以下异常。
The ViewData item that has the key 'CurrentPosition' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: The ViewData item that has the key 'CurrentPosition' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>'.
Source Error:
Line 36: @Html.LabelFor(m => m.CurrentPosition, new { @class = "col-md-2 control-label" })
Line 37: <div class="col-md-10">
Line 38: @Html.DropDownListFor(m => m.CurrentPosition, ViewData["Positions"] as SelectList)
Line 39: @Html.ValidationMessageFor(m => m.CurrentPosition, "", new { @class = "text-danger" })
Line 40: </div>
型号:
[Display(Name = "Current Position")]
[Required(ErrorMessage = "Please select their current position")]
public string CurrentPosition { get; set; }
查看:
<div class="form-group">
@Html.LabelFor(m => m.CurrentPosition, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.CurrentPosition, ViewData["Positions"] as SelectList)
@Html.ValidationMessageFor(m => m.CurrentPosition, "", new { @class = "text-danger" })
</div>
</div>
控制器:
[HttpGet]
public ActionResult Sales()
{
var positions = new SelectList(new []
{
new { value = 0, text = "Select a Position..." },
new { value = 1, text = "Merchandiser" },
new { value = 2, text = "ISR" },
new { value = 3, text = "TM" },
new { value = 4, text = "AISR" },
new { value = 5, text = "TAM" },
new { value = 6, text = "BAM" },
new { value = 7, text = "CSR" },
new { value = 8, text = "Director" },
new { value = 9, text = "TSM" },
new { value = 10, text = "Tel-Sell" },
new { value = 11, text = "Graphics" },
new { value = 12, text = "Shelf Set" },
new { value = 13, text = "Secretary" },
new { value = 14, text = "POS" },
new { value = 15, text = "Other" }
},
"value", "text", 1);
ViewData["Positions"] = positions;
return View();
}
我已经尝试了几种不同的方法,如果我直接在视图中静态填充列表项,似乎只能让它工作,我认为这不正确,因为我将在此视图中再次使用此列表.你怎么看?
编辑:发布操作。暂时是空的。
[HttpPost]
public ActionResult Sales(SalesViewModel model)
{
return View(model);
}
【问题讨论】:
标签: asp.net-mvc razor