如何在ASP.NET MVC 3中使用DropDownList

时间:2011-02-23 19:45:16

标签: asp.net-mvc asp.net-mvc-3 razor

我是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>

1 个答案:

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