HtmlHelper MVC 5

时间:2016-04-08 11:05:06

标签: c# asp.net

我的CreateGame视图连续包含三个元素:labeldropdownlisteditbox以放置十进制数字。

它是这样的:

<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");

1 个答案:

答案 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" })