【问题标题】:How to send multiple javascript values to a C# action method?如何将多个 javascript 值发送到 C# 操作方法?
【发布时间】:2016-07-21 15:07:17
【问题描述】:

假设我有一些像图像中的 javascript。在数组中 我将(多个)值放入变量数组并发送 数组到控制器中的操作方法。但是,在操作方法中,我会将其作为“对象”来获取。如何从这个“对象”中获取值?我宁愿不使用 ajax 帖子。这可能吗?如果是,我如何“捕捉”动作方法中的值?

【问题讨论】:

  • 可能重复。检查这个stackoverflow.com/questions/25288240/…
  • 你是说你想发回数据,但不使用 AJAX,例如只是一个提交按钮?如果你有一个模型,它的属性之一可能是你的 int 数组。

标签: javascript c# asp.net-mvc-5 asp.net-ajax


【解决方案1】:

在 Ajax 调用中:

    var items = ['USA', 'UK', 'Canada'];
    $.ajax(
        {
            type: "POST",
            url: "/Test/Details",
            contentType: 'application/json',
            data: JSON.stringify({ function_param: items })
        });

在控制器中:

    public ActionResult Details(string[] function_param)

如果你不想使用Ajax调用,那么在html中创建一个输入类型的隐藏控件,并将javascript数组放入隐藏字段,并使用request.form[“hiddencontrol”提交表单并在控制器中获取值]

在 JS 中:

    $("#hiddenControl").val(JSON.stringify(items));

【讨论】:

    【解决方案2】:

    您应该使用data 属性来发送整数数组

    var array = [1, 2, 4];    
    $.ajax({
        url: '/Home/Items',
        type: 'POST',
        data:  { items: array },
        success: function(data) {
            console.log(data);
        }
    });
    

    假设您有这样的操作方法来接收它

    [HttpPost]
    public ActionResult Items(int[] items)
    {
        // to do  : do something with items
        return Json(items);
    }
    

    现在我看到您读取了输入字段的值并将其用作数组变量的值。我不确定您在输入字段中有什么格式的值。如果是逗号分隔的 int 列表(例如:“1,3,5”),您可以使用 split 函数从中获取数组。

     var v = "2,5,78,8";
     var array = v.split(',');
    

    【讨论】:

      猜你喜欢
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      相关资源
      最近更新 更多