我的CreateGame
视图连续包含三个元素:label
,dropdownlist
和editbox
以放置十进制数字。
它是这样的:
<div class="form-group">
<div class="col-md-1.5">
@Html.LabelFor(model => model.id1, htmlAttributes: new { @class = "control-label col-md-2" })
</div>
<div class="col-md-2">
@Html.DropDownListFor(model => model.id1, (SelectList)ViewBag.Lista, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.id1, "", new { @class = "text-danger" })
</div>
<div class="col-md-1">
@Html.EditorFor(model => model.rating_1, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.rating_1, "", new { @class = "text-danger" })
</div>
</div>
基本上我想确定哪个玩家(来自下拉列表)玩游戏并为他指定一定的等级。
现在我有两种不同的情景。我可以为评级设置一个整数,一切运行顺利,或者我可以输入一个十进制数字(这就是重点),并在此行中抛出System.InvalidOperationException
异常:
@Html.DropDownListFor(model => model.id1, (SelectList)ViewBag.Lista, htmlAttributes: new { @class = "form-control" })
陈述
具有键'id1'的ViewData项的类型为'System.Int32'但是 必须是'IEnumerable'类型。
我知道错误消息的内容,但我不明白rating
属性如何改变编译器查看上面一行的方式。如何能够为评级插入十进制数?
修改
顺便说一句,这就是我在我的控制器上创建ViewBag.Lista
的方式:
var lista = db.Players
.Select(p => new SelectListItem
{
Text = p.name,
Value = p.ID.ToString()
}).ToList();
ViewBag.Lista = new SelectList(lista, "Value", "Text");
答案 0 :(得分:0)
尝试使用id1
设置的模型:
public IEnumerable<SelectListItem> Your_name_list {get; set;}
在视图中设置此列表:
@Html.DropDownListFor(model => model.id1, model.Your_name_list, htmlAttributes: new { @class = "form-control" })