2013-08-28 58 views
0

我在視圖中使用常規HTML下拉列表(選擇)。 我不想使用Html.DropdownlistFor出於某種原因。 現在我可以在我的控制器類中獲取選定的值。 如何將選定的值返回給視圖?ASP.NET MVC - 設置靜態選擇的默認值(下拉列表)

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

爲什麼不使用Html.DropDownListFor ...?然後它自動照顧自己。 –

+0

DropDownListFor不支持OptGroup,我不想寫擴展方法,並使其變得複雜.. – pili

+0

http://stackoverflow.com/questions/13402321/set-a-select-by-option-value-with-optgroups - 這種幫助? –

回答

1

好,你走了,你已經通過selected屬性來完成它:

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

你應該把選定的屬性上要預選值。

我想你現在已經意識到你不使用Html.DropDownListFor的助手會自動爲你處理。因爲現在你必須把@if其他的狀態轉換成意大利麪代碼才能達到預期的行爲。但我想你已經有了不使用幫手的理由。


UPDATE:

從您的評論似乎是你的理由不使用DropDownList的助手是因爲它不支持optgroup。這是真的,一個很好的理由。但是編寫一個custom helper是微不足道的,並且真的可以避免使用if/else語句爲預先選擇默認值的spaxhettifying您的視圖。

+0

我不使用DropDownListFor的原因是因爲它不支持optgroup。但我正在尋找一個簡單的基於HTML的解決方案來設置默認值,而不是意大利麪代碼。使用get,post,服務器變量,如php ... – pili

+0

您將不得不通過正確的選項設置選定的屬性。爲了做到這一點,你不可避免地需要在你的觀點中寫下如果陳述。 –

+0

我相信從服務器端代碼返回選擇列表中的選定值應該是非常可能的。應該有一個html概念,而不是使用服務器端語言功能。 – pili

1

不是有很多幹淨的方式去了解這一點,但假設你有某種類型綁定到該頁面的模型,你可以儘快放下基於該模型值下降的設定值,作爲頁面加載:

<script type="text/javascript"> 

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

</script>