代码之家  ›  专栏  ›  技术社区  ›  Dimitri

MVC PartialViewResult未在DropDownList for changed事件上触发(已触发事件,未触发PartialViewResult)

  •  0
  • Dimitri  · 技术社区  · 7 年前

    大家好,谢谢你们读这篇文章。

    我已经有同样的情况下工作感谢 Stephen Muecke his answer

    这里唯一的区别是,我不希望部分视图从textbox搜索值加载数据,而是从dropdownlist加载数据以供选择。

    这就是我所拥有的:

    局部视图:

        @Html.DropDownListFor(p => p.SelectedSupplier, Model.SuppliersSelectList, new { @class = "form-control col-md-5", @id = "dropdownSuppliers" })
    

    (产品)控制器:

       public PartialViewResult SupplierChanged(int selectedSupplierId ,ProductViewModel model)
        {     
            // perform logic and load new data into the partial view
            return PartialView("_ProductDetail");
        }
    

     <script type="text/javascript">
        $(function () {
            $('#dropdownSuppliers').on("change",function () {
    
                //Content to send
                var selectedValue = $(this).val();             
    
                $.get('@Url.Action("SupplierChanged", "Product")', { "SelectedValue": selectedValue },
                            function (result) { $('#panel6').html(result); }
                );            
            });
        });
    </script>
    

    参考局部视图:

     <div class="col-md-12 tab-pane fade float-left" id="panel6" role="tabpanel" style="margin-right:0;">
    
                        @Html.Partial("_ProductDetail")
    
                    </div>
    

    我已经测试了几种方法,用警报来查看我的JS是否被执行,它是,我在dropdownfor中有一个所选项目的ID,只是我似乎不能在我的控制器中点击我的PartialViewResult。

    @onchange=“this.form.submit();” 在我的下拉列表中,但这不是我想要的,我有半个页面必须保持静态,另一个,基于下拉列表中的选择,因为它应该加载与该选择相关的数据。

    提前谢谢! 谨致问候

    1 回复  |  直到 7 年前
        1
  •  1
  •   Marinpietri    7 年前

    尝试只传递一个参数。 将方法更改为

    public PartialViewResult SupplierChanged(int selectedSupplierId)
    {     
        // perform logic and load new data into the partial view
        return PartialView("_ProductDetail");
    }
    

    在很多情况下,引擎ASP.MVC无法绑定到获得多个参数的方法。 希望对你有帮助

    推荐文章