首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何刷新视图组件asp.net核心

如何刷新视图组件asp.net核心
EN

Stack Overflow用户
提问于 2018-08-01 04:52:53
回答 1查看 555关注 0票数 0

我有一个视图与3个组合框,从数据库中获取他们的选项。当选择其中一个选项时,可能需要过滤其他选项。我正在使用ajax调用我的控制器:

代码语言:javascript
复制
$(".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)
    },

});
});

被调用的控制器方法如下:

代码语言:javascript
复制
[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方法如下:

代码语言:javascript
复制
 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的填充方式如下:

代码语言:javascript
复制
@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中有正确的选项,但是浏览器上的视图永远不会改变。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2018-08-01 05:04:45

Feel下拉值可以在JS中的Ajax调用方法中更新。

示例:

代码语言:javascript
复制
success: function (data) {
                        $.each(data, function (index, value) {
                            $("#Dropdown").append('<option value="'
                             + value.Value + '">'
                             + value.Value + '</option>');
                        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51621895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档