formcollection对象中的值存储为键值对。但是,假设有人使用“Id”作为值,使用“Name”作为填充下拉列表的文本。在这种情况下,如何使用formcollection对象从下拉列表中访问“Name”?
要访问所选值,我知道以下代码:
public ActionResult ActionName(FormCollection formcollection)
{
var value = formcollection["dropdownlistName"];
}
上面的代码将给出“Id”的值,但如果我需要检索“Name”并将其存储在变量中该怎么办?
我是新手;如果有人知道,请帮助。我们将不胜感激。感谢。
答案 0 :(得分:1)
您无法将下拉列表文本发布到服务器,您只能发送值。有解决方法 - 您可以手动POST数据并添加下拉文本。但正确的方法是首先从您填充下拉列表的来源中引用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"];