2012-05-21 110 views
0

嗨鄉親嗨有一個非常有趣的情況。asp.net mvc,dropdownlist,jquery

我有要求從下拉列表*一個的MediaType通過由

@Html.DropDownListFor(m => m.MediaType, Model.MediaTypeList) 

生成的下拉列表的方式,當我用手填寫表格的形式的所有值都OK和功能的視圖模型以它應該的方式工作。

但後來我實現了一個jquery函數來設置下拉列表的值,只要你上傳一個文件,它會自動檢測到它有什麼媒體類型。

function setValueToDropDown(media){           
    $('#MediaType').attr('disabled',''); 
    var value = media; 
    $('#MediaType').val(value); 
} 

,當我提交域名驗證告訴我該字段是必須的,即使在下拉列表的選項被選中,當我在控制檯執行函數以驗證該值,它比空不同。

alert($('#MediaType').val()) 

所以我不明白爲什麼當即時將值分配給下拉動態mvc無法識別它。我到處看,我無法找到問題。

+0

「value」是您想要選擇的選項的正確_value_值嗎?或者它在該選項中表示測試? – themarcuz

+0

在這種情況下,值是我想要選擇的值,我只是把它放在那裏把一個斷點,看到螢火蟲中的值我現在認識到,它看起來有點虛擬,因爲我可以從參數中看到媒體val –

+0

最後感謝您決定創建一個隱藏的輸入字段,並將其映射到我的視圖模型中,我已經花費很多時間在這個 –

回答

1

這應該足以讓並設置<select>元素的值。

var setValueToDropDown = function(media) { 
    $('#MediaType').prop('disabled', false).val(media); 
}; 

,您應該使用.prop()自1.6版本管理像disabled性質。 還要確保在DOM準備好之後運行腳本等;)

1

我不知道你運行的腳本是怎麼樣的,也不知道它是怎麼做的。但是,也許腳本尋找value屬性,而不是value財產

嘗試使用這樣的:

function setValueToDropDown(media){           
    $('#MediaType').attr('disabled',''); 
    var value = media;     // Why do you save media in value...? 
    $('#MediaType').attr("value", value); 
}