在视图中使用以下表单
<% using (Ajax.BeginForm("PatientSearch", new {}, new AjaxOptions()
{
HttpMethod = "POST",
UpdateTargetId = "searchResults",
OnBegin = "BeginRequest",
OnSuccess = "SuccessRequest",
OnFailure = "FailRequest"
}))
{ %>
<%=Html.DropDownList("patientType",(SelectList)ViewData["PatientTypeList"]) %>
<%=Html.DropDownList("edCenterID",(SelectList)ViewData["EdCenterList"]) %><br />
<input type="submit">
<%} %>
以下HTML中的结果
<select id="patientType" name="patientType">
<option selected="selected">Referral</option>
<option>Patient</option>
</select>
<select id="edCenterID" name="edCenterID">
<option value="2">Barren River District Health Department</option>
<option value="3">Madison County Health Department</option>
</select>
我尝试用我的控制器中的代码捕获值
public ActionResult PatientSearch(string patientType, int edCenterID) {
//do something with values
}
patientType始终作为“”传递;但是,edCenterID发布并收到了。
如果我将它从Ajax.BeginForm更改为HTML.BeginForm,一切都很完美。
DropDownList中的问题,我的控制器,都是?
从评论中添加
ViewData["PatientTypeList"]=new SelectList(new List<string>()
{ "Referral", "Patient"});
答案 0 :(得分:2)
patientType列表是否具有.Value
根据事物的外观,没有为PatientType DDL value
呈现<option>
,所以基本上每个选项都有一个值=“”,所以它实际上回发了正确的值。 / p>
问题在于首先渲染的是什么。
修改强>
尝试
Dictionary<string, string> d = new Dictionary<string, string>();
d.Add("referral", "referral");
d.Add("patient", "patient");
ViewData["PatientTypeList"]=new SelectList(d, "Key", "Value");
答案 1 :(得分:0)
这个没有解决方案吗?似乎在Ajax表单提交中出现了问题。
这是一个很好的修复,正常编写你的方法,然后运行:
function addDropDownValues() {
$("select option").each(function(i) {
if ($(this).text() == "Red") { $(this).attr('value', "Red"); }
else if ($(this).text() == "Amber") { $(this).attr('value', "Amber"); }
else if ($(this).text() == "Green") { $(this).attr('value', "Green"); }
else if ($(this).text() == "Complete") { $(this).attr('value', "Complete"); }
});
}
“红色”,“琥珀色”等......是您希望传递的值
这将为每个下拉列表附加一个值,产生:
<select name="status1" id="status1"><option value="Red">Red</option>
<option value="Amber">Amber</option>
<option selected="selected" value="Green">Green</option>
<option value="Complete">Complete</option>
</select>
这适用于Firefox和Internet Explorer。 Internet Explorer需要值项,firefox不需要。