未更改事件的Dropdownlist上未触发MVC PartialViewResult(已触发事件,未触发PartialViewResult)

时间:2018-11-05 14:19:45

标签: jquery onchange html.dropdownlistfor asp.net-mvc-partialview

大家好,谢谢阅读。

由于Stephen Muecke his answer

,我已经可以使用相同的方案了

这里唯一的区别是我不希望局部视图从文本框搜索值中加载数据,而是从下拉列表中加载数据进行选择。

我设法使.on(“ change”,...)事件起作用,但是由于某种原因我的PartialViewResult“ action”未命中。我在控制台中没有错误,所以我不认为它的JS / JQuery。

这就是我所拥有的:

部分视图:

    @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");
    }

在常规视图中调用PartialViewResult的Javascript:

 <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>

引用PartialView:

 <div class="col-md-12 tab-pane fade float-left" id="panel6" role="tabpanel" style="margin-right:0;">

                    @Html.Partial("_ProductDetail")

                </div>

我已经测试了几种方法,并通过警报来查看我的JS是否已执行,而且是,我在下拉列表中具有所选项目的ID,只是我似乎无法在控制器中命中我的PartialViewResult。

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

有人可以告诉我为什么不触发我的PartialViewResult的可能原因吗?

先谢谢您! 问候

1 个答案:

答案 0 :(得分:1)

尝试仅传递一个参数。 将您的方法更改为

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

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

相关问题