我有两个级联的下拉菜单 第一个下拉菜单有2个值:(负数和正数) 因此,如果我从第一个下拉菜单中选择了负数,则第二个下拉菜单应显示另外3个值,如果我选择了正向,则第二个下拉菜单应具有2个值。 此业务逻辑运行正常。
但是当我选择Negative并从第二个下拉列表中选择一个值,然后更改我的第一个下拉列表的值时,我希望第二个下拉列表的Model属性应该变得清晰,因为它仍然包含先前选择的值
为此,我对控制器进行了ajax调用,它将处理所有问题
<script language="javascript" type="text/javascript">
function GetValue(id) {
if ($("#firstDropdownID option:selected").index() == 1) {
$.ajax({
url: '@Url.Action("ResetDropdownValues", "ControllerName")',
data: '{ id: ' + id + '}',
contentType: "application/json; charset=utf-8",
cache: false,
type: "POST",
success: function (data) {
alert("error : " + reponse);
},
error: function(reponse) {
alert("error : " + reponse);
}
});
}</script>
这是我要访问当前模型以清除其属性的控制器
[HttpPost]
public ActionResult ResetDropdownValues(int id)
{
if (id == 1)
{
//Access Current Model state to clear value for a particular property
}
return null;
}
这是更改返回JSonResult的第二个下拉列表的值的代码
if (!$("#firstDropdownID option:selected").index() == 0) {
var procemessage = "<option value='0'> Please wait...</option>";
$("#secondDropdownID ").html(procemessage).show();
var url = '@Url.Action("GetSecondDropdownValue", "ControllerName")';
$.ajax({
url: url,
data: '{ id: ' + id + '}',
contentType: "application/json; charset=utf-8",
cache: false,
type: "POST",
success: function(data) {
var markup = "<option value='0'>Select Type of Issue</option>";
for (var x = 0; x < data.length; x++) {
markup += "<option value=" + data[x].Value + ">" + data[x].Text + "</option>";
}
$("#secondDropdownID ").html(markup).show();
},
error: function(reponse) {
// alert("error : " + reponse);
}
});
}
以及返回JsonResult的控制器
[HttpPost]
public ActionResult GetSecondDropdownValue(int id)
{
List<ExperienceType> obj_ToIssue = new List<ExperienceType>();
if (id == 1)
{
obj_ToIssue = GetValue().Where(m => m.Id != 0).ToList();
}
else
{
obj_ToIssue = GetValue().ToList();
}
SelectList obj= new SelectList(obj, "Id", "Name");
return Json(obj);
}