首页 > 解决方案 > 如何传递下拉列表选择的值以获取 mvc 控制器中的功能

问题描述

我对 asp.net MVC 完全陌生,我有一个从数据库填充的下拉列表。现在我需要在控制器的 get 函数中发送选定的值(id),以便我可以加载选定的值详细信息这是我尝试过的代码。

看法:

 @Html.DropDownListFor(model => model.ProductName, new SelectList(Model.ProductsList, "ProductID", "ProductName"),  new
                   {
                       id = "Productslist",
                       @class = "GreenDropDownListStyle",
                       @datastyle = "dropdown",
                   })

java脚本代码:

        <script type="text/javascript">
            $(document).ready(function () {
                $("#Productslist").change(function () {
                    debugger;
                    var SelectedProductID = this.value;
                    if (SelectedProductID != "") {
                        $.ajax(
                            {
                                type: 'GET',
                                url: '/Inventory/ViewProduct',
                                data: { ProductID: SelectedProductID },
                                contentType: 'application/json; charset=utf-8',
                                success: function (details) {
                                    //alert("success"); 
                                },

                            });
                    } else {
                    }

                });

            });
        </script>

此代码可以获取选定的 id 并查看成功警报消息,但它不会将选定的值 (id) 发送到控制器中的 post 函数

控制器:

[HttpPost]
    public ActionResult ViewProduct(int? ProductID)
    {
         if (ProductID != null && ProductID >0)
            {

            }
            else
            {
               message = "";
            }
        return View();
    }

标签: javascriptasp.net-mvc

解决方案


您应该POST在此处指定为 http 方法。

$.ajax({
   method: 'POST',
   url: '/Inventory/ViewProduct',
   data: { ProductID: SelectedProductID },
   contentType: 'application/json; charset=utf-8',
   success: function (details) {
      //alert("success"); 
   }
});

值得查看此链接以获取有关如何使用 jquery ajax 功能的更多详细信息。

顺便说一句,如果您使用的是 1.9.0 之前的 jQuery 版本,请使用type: 'POST'而不是。method: 'POST'


推荐阅读