如何在MVC中的下拉更改中调用操作名称?
问题描述:
如何在选择第一个下拉列表时将数据绑定到第二个下拉列表?如何在MVC中的下拉更改中调用操作名称?
我已经使用强类型视图绑定第一个dropdownlist。
现在如何调用动作名称,并绑定第二个dropdownlist选择第一个dropdownlist?
<tr>
<td>Select Make:</td>
<td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList, new { @class = "form-control", @onchange = "FillModel()" })</td>
</tr>
<tr>
<td>Select Model</td>
<td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList)</td>
</tr>
操作名称
public ActionResult FillModel(int MakeId)
{
var makedata = objVehicleContext.VehicleMakes.Where(m=>m.MakeId==MakeId);
ViewBag.makelist = makedata.ToList();
return View();
}
答
你可以把jQuery函数在下拉列表中的变化。对于实施例
<tr>
<td>Select Make:</td>
<td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList, new { @class = "form-control", @onchange = "FillModel()", id="ddlMake"
})</td>
</tr>
<tr>
<td>Select Model</td>
<td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList,new {@id="ddlModel"})</td>
</tr>
这是一个简单的解决方案来调用下拉变化的操作方法。
$(document).ready(function(){
$("#ddlMake").change(function(){url.action('Controller Name','Action Method Name')})
})
但对于进一步的效果您必须调用Ajax调用方法和获取数据。之后,在方法成功之后,您必须在ddlModel上添加Data的其余部分。就像它。
$(document).ready(function(){
$("#ddlMake").change(function(){
$.ajax({
type:'POST',
url:'url.action('Controller Name','Action Method Name')'
data:{id:$('#ddlMake').val()},
sucess:{
$("#ddlModel").append('<option value="' + ModelId.Value + '">' + Model.Text + '</option>');
}
});)})
})
,你需要使用控制器
public JsonResult GetModel()
{
//your dropdown datasource
return json(ddlModeldatasurce,JsonRequestBehavior.AllowGet);
}
答
这样做,如果我明白你的问题正确的,那么你只需做简单的jquery.post
$("#ddlMake").change(function() {
$.post("controller/ActionName", function (data) {
$.each(data, function (val, txt) {
$("#ddlModel").append('<option value="' + val + '">' + txt + '</option>');
});
});
});
并在控制器中:
public Actionresult GetModel()
{
//your dropdown datasource
return json(ddlModeldatasurce);
}
+0
有没有办法做到不使用Ajax和JQuery? –
+0
是的,你也可以使用Viewbag来做到这一点,但它会导致你完整的回发。 –
您需要使用ajax。参考[这个答案](http://*.com/questions/33247717/how-to-keep-cascade-dropdownlist-selected-items-after-form-submit/33248183#33248183)的例子创建级联下拉列表 –