在我的MVC控制器中,我可以向我的HTML.DropDownList添加值吗?

时间:2010-04-06 01:32:29

标签: c# html asp.net-mvc

在我看来,我有一个HTML DropDownList,在我的控制器中使用List<string>填充。

<%= Html.DropDownList("ReportedIssue", (IEnumerable<SelectListItem>)ViewData["ReportedIssue"]) %>

List<string> reportedIssue = new List<string>();
reportedIssue.Add("All");
reportedIssue.Add(...);
ViewData["ReportedIssue"] = new SelectList(reportedIssue);

在我看来,结果是:

<select name="ReportedIssue" id="ReportedIssue">
    <option>All</option>
    <option>...</option>
</select>

有没有办法做到这一点,并且还包含每个<option>标签中的值?

<select name="ReportedIssue" id="ReportedIssue">
    <option value="0">All</option>
    <option value="1">...</option>
</select>

谢谢,

亚伦

2 个答案:

答案 0 :(得分:2)

只需对代码稍作修改即可。您需要决定如何定义价值物品。现在我只是在评论中你可以做到:

ViewData["ReportedIssue"] = new SelectList(reportedIssue
    .Select(r => new SelectListItem 
        { 
            Text = r, 
            Value = someIdValue  // define this however you want
        }));

所以只需用这个代码替换你的代码并实现someIdValue占位符。

答案 1 :(得分:1)

您可以循环遍历列表并在视图中输出吗?

(同样要传递Id和Text我会创建一个Dictionary并将其添加到你的视图模型/ ViewData中)。

在视图中:

    <select name="ReportedIssue" id="ReportedIssue">
        <option value="0">All</option>
<% foreach(int key in myDictionary.Keys) { %>
        <option value="<%= key %>"><%= myDictionary[key] %></option>
<% } %>
    </select>