美好的一天,
我有Html.DropDownListFor这个问题我似乎无法解决..它给了我正确数量的选项,如果我在代码中做一个断点,它应该呈现列表,“ SelectItemList“对象包含具有正确值的项目,但它吐出的实际HTML是以下内容:
<select id="Reason_ReasonId" name="Reason.ReasonId"><option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>
该模块包含:
public SelectList ReasonList
{
get
{
SelectList selectList;
List<SelectListItem> selectItems;
using (var db = new EscalationDataContext())
{
var reasons =
db.Reasons
.OrderBy(r => r.Reason1)
.Select(r => new SelectListItem
{
Value = r.ReasonId.ToString(),
Text = r.Reason1
});
selectItems = reasons.ToList();
selectList = new SelectList(selectItems);
}
return selectList;
}
}
控制器只是创建一个默认实例,并设置默认值:
public ActionResult Create()
{
EscalationModel model = new EscalationModel
{
Reason = new Reason { ReasonId = new Guid("598c28c2-877a-44fa-9834-3241c5ee9355"), Reason1 = "Taken too long" },
ActionedDate = DateTime.Now
};
return View(model);
}
最后但并非最不重要的是,视图:
<%: Html.DropDownListFor(m => m.Reason.ReasonId, Model.ReasonList) %>
为什么它的行为像这样?正如我所说,在实际代码中(在视图中)我有正确的值,但是..它不喜欢我..任何帮助都将非常感谢,提前感谢!
答案 0 :(得分:6)
好的..似乎你必须指定SelectListItem中的哪个变量用于“Value”并且用于“Text”..
selectList = new SelectList(selectItems);
成了..
selectList = new SelectList(selectItems, "Value", "Text");
这似乎已经成功了!