我是MVC的新手,我正试图在我的视图中使用我的控制器中的“规则”列表填充DropDownList。当我按照列出的方式进行操作时,我只会得到一个带有一堆项目的下拉列表,其中包含CellularAutomata.Models.Rules。我知道我这样做不正确,我只是想知道我是如何让它在下拉列表中显示每条规则的规则描述。
我有一个模特
public class Rule
{
public int ID { get; set; }
public int Name { get; set; }
public string Description{ get; set; }
public Rule(int name, string description)
{
Name = name;
Description = description;
}
public Rule()
{
Name = 0;
Description = "";
}
}
控制器
public ActionResult Index()
{
var rules = from rule in db.Rules
select rule;
return View(rules.ToList());
}
和视图
@model IEnumerable<CellularAutomata.Models.Rule>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<table>
<tr>
<td>
@Html.DropDownList("Test", new SelectList(Model))
</td>
</tr>
</table>
答案 0 :(得分:4)
你可以有一个视图模型:
public class MyViewModel
{
public string SelectedRuleId { get; set; }
public IEnumerable<Rule> Rules { get; set; }
}
然后在你的控制器中:
public ActionResult Index()
{
var model = new MyViewModel
{
Rules = db.Rules
};
return View(model);
}
并在视图中:
@model CellularAutomata.Models.MyViewModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@Html.DropDownListFor(
x => x.SelectedRuleId,
new SelectList(Model.Rules, "ID", "Description")
)