在MVC3中设置所选选项

时间:2011-10-07 21:35:32

标签: asp.net-mvc-3 razor

所以我可以做到这一点

string selectedOption = ViewBag.SelectedOption;

<select id="SelectedYear" name="SelectedYear">       
    <option value="2010">2010</option>//if(selectedOption == 2010)...meh...
    <option value="2011">2011</option>             
    <option value="2012">2012</option>
    <option value="2013">2013</option>
</select>

我知道我可以将SelectedOption存储在div中,并在$(document).ready之后以简洁的方式使用jQuery设置所选选项。

是否有一种简洁的方法可以直接使用MVC3 / razor完成任务?

4 个答案:

答案 0 :(得分:15)

类似的东西:

int selectedOption = ViewBag.SelectedOption;

<select id="SelectedYear" name="SelectedYear">       
    <option value="2010" selected="@(selectedOption == 2010 ? "selected" : "")">2010</option>
    <option value="2011" selected="@(selectedOption == 2011 ? "selected" : "")">2011</option>             
    <option value="2012" selected="@(selectedOption == 2012 ? "selected" : "")">2012</option>
    <option value="2013" selected="@(selectedOption == 2013 ? "selected" : "")">2013</option>
</select>

话虽这么说,这就是HtmlHelper.DropDownList的用途。

将您的逻辑放在控制器中,然后通过 ViewBag 传递 IEnumerable 。此时,您只需在视图中调用帮助程序:

@Html.DropDownList("optionName", ViewBag.MyOptionsList as IEnumerable<SelectListItem>)

答案 1 :(得分:6)

int selectedOption = ViewBag.SelectedOption;


<select id="SelectedYear" name="SelectedYear"> 

<option value="2010" @if(selectedOption == 2010){<text>selected="selected"</text>}>2010</option>

...

</select>

答案 2 :(得分:3)

这个方法在正确的问题中回答现在不起作用,最好使用下一个例子:

<option value="someValie" @(ViewBag.someVariable == "someValue" ? "selected" : String.Empty)>...</option>

答案 3 :(得分:3)

TagHelper不允许在其标签区域中使用C#代码。

您可以使用字符!将option元素转换为常规html标签。

例如:

<!option @(ViewBag.CurrrentPage == x ? "selected" : "")>@x<!/option>