我有一个视图与3个组合框,从数据库中获取他们的选项。当选择其中一个选项时,可能需要过滤其他选项。我正在使用ajax调用我的控制器:
$(".dropFilter").on('change', function () {
var data = {
'EventEmitter': $(this).attr("id"),
'SelectedValue': $(this).val()
}
$.ajax({
type: 'POST',
url: '../MyController/FilterCombos',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(data),
success: function (msg) {
console.log(msg)
},
fail: function (msg) {
console.log(msg)
},
});
});
被调用的控制器方法如下:
[HttpPost]
public IActionResult FilterCombos([FromBody]FilterComboRequest fcr)
{
switch (fcr.EventEmitter)
{
case "combo1-dropdown":
return ViewComponent("MyViewComponent", new
{
firstFilter = fcr.SelectedValue,
secondFilter = 0,
thirdFilter = fcr.SelectedValue
});
case "combo2-dropdown":
return ViewComponent("MyViewComponent", new
{
firstFilter = 0,
secondFilter = fcr.SelectedValue,
thirdFilter = 0
});
}
return ViewComponent("MyViewComponent", new
{
firstFilter = 0,
secondFilter = 0,
thirdFilter = 0
});
}
我的视图组件invokeAsync方法如下:
public async Task<IViewComponentResult> InvokeAsync(int firstFilter,int secondFilter,int thirdFilter)
{
var mOpciones = new MOpciones();
var lOpciones = new LOpciones(_config);
lOpciones.fill(mOpciones,firstFilter,secondFilter,thirdFilter);
return View(mOpciones);
}
combos的填充方式如下:
@Html.DropDownList("combo1",
new SelectList(Model.First,"Id","Nombre"),
"",
new { @class = "col-6 form-control form-control-lg",
@id="combo1-dropdown" })
在调试时,我看到mOpciones在InvokeAsync中被正确填充,Model.First在Default.cshtml中有正确的选项,但是浏览器上的视图永远不会改变。我做错了什么?
发布于 2018-08-01 05:04:45
Feel下拉值可以在JS中的Ajax调用方法中更新。
示例:
success: function (data) {
$.each(data, function (index, value) {
$("#Dropdown").append('<option value="'
+ value.Value + '">'
+ value.Value + '</option>');
});
https://stackoverflow.com/questions/51621895
复制相似问题