ASP.NET MVC - 设置静态选择的默认值(下拉列表)

时间:2013-08-28 20:23:17

标签: c# asp.net-mvc asp.net-mvc-4 razor html-select

我在视图中使用常规html下拉列表(选择)。 出于某种原因,我不想使用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>

2 个答案:

答案 0 :(得分:1)

那么你去了,你已经使用selected属性完成了它:

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

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

我想你现在意识到你没有使用Html.DropDownListFor帮助器的疯狂,它会自动为你处理。因为现在你必须把@if else stataments转换成意大利面条代码才能达到理想的行为。但我想你已经有了不使用助手的理由。


更新:

从您的评论中看来,您不使用DropDownList助手的原因是因为它不支持optgroup。这是真的,也是一个很好的理由。但是写一个custom helper是微不足道的,并且可以避免你用if / else语句来破坏你的观点以预先选择默认值。

答案 1 :(得分:1)

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

<script type="text/javascript">

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

</script>