0

I am using the regular html drop downlist (select) in a View. I don't want to use Html.DropdownlistFor for some reason. Now I am able to get the selected value in my Controller class. How do I assign back a selected value back to the view?

<select name='ddlLocation' id='ddlLocation'>
  <option value="">All </option>
  <option selected="selected" value="1">City1</option>
  <option value="2">City2</option>
  <optgroup label="Group">
    <option value="3">City2</option>
    <option value="4">City3</option>
    <option value="5">City4</option>
  </optgroup>
</select>
4

2 回答 2

1

好了,您已经使用该selected属性完成了它:

<option selected="selected" value="1">City1</option>

您应该将选定的属性放在要预选的值上。

我想现在你意识到你不使用 Html.DropDownListFor 助手的疯狂了,它会自动为你处理。因为现在您必须将@if else 语句转换为意大利面条代码才能实现所需的行为。但我想你有你不使用助手的理由。


更新:

从您的评论看来,您不使用 DropDownList 帮助程序的原因似乎是因为它不支持optgroup. 这是真的,也是一个很好的理由。但是编写 acustom helper是微不足道的,并且确实可以避免您使用 if/else 语句来预先选择默认值来使您的视图变得意大利面。

于 2013-08-28T20:28:21.800 回答
1

没有很多干净的方法可以解决这个问题,但假设您有某种类型的模型绑定到此页面,您可以在页面加载后立即根据模型值设置下拉列表的选定值:

<script type="text/javascript">

(function($) {
    $(document).ready(function() {
        var locationToSet = "@Model.LocationToSet";
        $('#ddlLocation option[value="' + locationToSet + '"]').prop('selected', true);});
})(jQuery);​

</script>
于 2013-08-28T21:40:34.867 回答