【问题标题】:how to get the value of a dropdownlist to the controller in MVC如何将下拉列表的值获取到 MVC 中的控制器
【发布时间】:2017-05-18 15:02:51
【问题描述】:

我正在尝试使用 Jquery 将下拉列表的值传递给我的控制器,我尝试的所有操作都为我提供了第二个参数的空指针。这是我的代码:

这是 jQuery 代码:

<script>
$(function () {

    $("#ddl").on("change", function () {
    var selectedID = $("#ddl").val();
    this.href = this.href.replace("idhotel", selectedID);
    });
});
</script>

这是我的 ActionLink:

   @Html.ActionLink("Voeg toe aan winkelwagentje", "Winkelwagen", new { id = Model.Id, hotelid="idhotel" }, new { @class = "btn btn-default" })

这是我在控制器中的操作: (只是标题)

public ActionResult Winkelwagen(int? id,int hotelid)
    {
        
        Console.Write("Please give me the hotelid: " + hotelid);
Return View();


}

这是下拉列表:

 @Html.DropDownList("ddl", new SelectList(ViewBag.list, "Text", "Value"), "Select")

输出下拉列表:

错误:

“/”应用程序中的服务器错误。

参数字典包含一个空条目,用于方法'System.Web.Mvc.ActionResult> Winkelwagen(System.Nullable`1[System.Int32]的非可空类型'System.Int32'的参数'hotelid' Int32)' > 在“TreinRittenVives.Controllers.ReizenController”中。可选参数必须 > 是引用类型、可空类型或声明为可选参数。 参数名称:参数

【问题讨论】:

  • 你能告诉我们下拉菜单的输出 html 吗?另外,console 中的任何错误?
  • 您是否尝试在 jquery 函数中记录 selectedID 和 href 的值?你得到了什么?
  • 控制台给了我id,但是替换有问题:
  • :无法获取未定义或空引用的属性“替换”
  • 第二个参数不可为空。你如何获得它的空值?下拉菜单中的 this.href 也有变化吗?下拉菜单没有href。您应该选择您的操作链接,然后设置其 href

标签: c# jquery asp.net asp.net-mvc visual-studio


【解决方案1】:

在您的脚本中this.href 表示您的选择元素,ID 为#ddl 和select 不能包含href 属性。所以你可以做类似的事情

<script>
$(function () {
    $("#ddl").on("change", function () { 
    var newHref=$("a").attr("href").replace("idhotel", this.value);       
    $("a").attr("href",newHref);         
    });
});
</script>

【讨论】:

  • idhotel 不断向我的控制器发送空值
  • @peukertje。请console.log($(a).attr("href").replace("idhotel", selectedID)); 并查看浏览器中打印的值。给我播种
  • 它给了我在 url 中发布的模型的 ID
  • reizen 是控制器名称,boeken 是动作名称,6 是 id 名称
  • 还有点小问题,如果我第一次选择后改了,他还是取第一次改的值
【解决方案2】:

您的第二个参数在控制器上不可为空。

应该是……

public ActionResult Winkelwagen(int? id, int? hotelid)

如果你希望它是一个可以为空的类型。

问候

克雷格

【讨论】:

    【解决方案3】:

    试试这个:

     $("#ddl").on("change", function () {
        var selectedID = $("#ddl").val();
        $(a).prop("href", $(a).prop("href").replace("idhotel", selectedID));
        });
    

    【讨论】:

      【解决方案4】:

      您的错误:

      “/”应用程序中的服务器错误。 参数字典包含方法“System.Web.Mvc.ActionResult > Winkelwagen(System.Nullable`1[System.Int32], Int32)”的参数“hotelid”的空条目 > 可空类型“System.Int32” > 在“TreinRittenVives.Controllers.ReizenController”中。可选参数必须 > 是引用类型、可空类型或声明为可选参数。参数名称:参数

      错误原因:

      上述错误在开发中大部分时间都会出现,而导致上述错误的主要原因是我们在控制器中编写action方法时,我们将参数指定为不可为空的,即不带问号的数据类型 例如

      公共无效测试(int a , int b)

      该值必须传递,如果由于某种原因不能传递就会出现上述错误。

      错误解决方法: 上述问题的最佳解决方案是将参数设为可空

      可以为空的前:

      公共无效测试(int?a,int?b)

      更多信息:https://docs.microsoft.com/en-us/dotnet/articles/csharp/programming-guide/nullable-types/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多