您不能將下拉列表文本發佈到服務器,您只能發送值。有解決方法 - 您可以手動發佈數據並添加下拉文本。但是,正確的做法是從第一位填寫下拉列表的源代碼中引用id
。
例子:
如果你有一個下拉這樣的:
<form id="someForm">
<select id="country" name="countryddl">
<option value="1">US</option>
<option value="2">UK</option>
</select>
<input type="submit" value="submit"/>
</form>
獲取控制器中的值並將其映射回源。
public ActionResult ActionName(FormCollection formcollection)
{
var countryId = formcollection["countryddl"];
var countryName = countriesMap[countryId ]; // Assuming countriesMap is a dictionary with all countries mapped to its Id.
}
解決方法
如果你絕對必須沿着形式發送的文字,你可以覆蓋提交表單的默認行爲,並與值一起發佈下拉文字:
$("#btnSubmit").click(function(e){
e.preventDefault();
var selectedOption = $("#CountryId option:selected").text();
// Add the selected drop down text to a hidden field
$("<input/>",{type:'hidden',name:'countryName'}).val(selectedOption).appendTo("#someForm");
// now post the form
$("#someForm").submit();
});
現在你可以在你的控制器中得到如下所示的文本:
var countryName = formcollection["countryName"];
我真的很喜歡你的第一個想法..感謝隊友 – Learner
解決方法是一個不太理想的方法嗎?如果是這樣,爲什麼? –