ASP.NET MVC-设置静态Select(dropdownlist)的默认值

本文关键字:dropdownlist 默认值 Select NET MVC- 设置 静态 ASP | 更新日期: 2023-09-27 18:29:19

我在视图中使用常规的html下拉列表(select)。出于某种原因,我不想使用Html.DropdownlistFor。现在,我可以在Controller类中获得选定的值。如何将选定的值分配回视图?

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

ASP.NET MVC-设置静态Select(dropdownlist)的默认值

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

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

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

我想现在你已经意识到了不使用Html.DropDownListFor帮助程序的疯狂,它会自动为你处理这个问题。因为现在你必须放置@if-else语句,将你的视图转换为意大利面条代码,才能实现所需的行为。但我想你有理由不使用这个助手。


更新:

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

没有太多干净的方法可以做到这一点,但假设你有某种类型的模型绑定到这个页面,你可以在页面加载后立即根据模型值设置下拉列表的选定值:

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