所以我可以做到这一点
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完成任务?
答案 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>