【问题标题】:Delete method with array type as parameter showing null value以数组类型为参数的删除方法显示空值
【发布时间】:2015-08-25 23:26:13
【问题描述】:

我正在调用 web-api 方法 delete all 带有数组类型参数,显示值null。为什么?

我传递的数据如下:data: "ArrMenuId"+ JsArrayMenuId,

function performalldeletemenu()
{

    if (confirm('Are you sure you want to delete this menu?'))
    {
        var JsArrayMenuId = new Array();
        $("input:checked").each(function ()
        {
            //console.log($(this).val()); //works fine
            JsArrayMenuId.push($(this).val());
        });
        alert(JsArrayMenuId);
        $.ajax({
            url: '/api/MenuWebApi/DeleteAllMenu/',
            type: 'DELETE',
            contentType: 'application/json; charset=utf-8',
            data: "ArrMenuId"+ JsArrayMenuId,
            success: function (data)
            {
                if (data.Success == true)
                {
                    //GetMenuList();
                }
            },
            error: function (xhr, textStatus, errorThrown)
            {
                //window.location = JsErrorAction;
            },

            headers:
            {
                'RequestVerificationToken': JsTokenHeaderValue
            }
        });
    }
    return false;
}



public HttpResponseMessage DeleteAllMenu(Array ArrMenuId)
{

}

这里 ArrMenuId 显示空值。

如果有人有解决方案,请告诉我。

【问题讨论】:

  • 你的删除方法在你的 web api 中是什么样子的?请将其添加到您的问题中。您必须以错误的方式传递数据,它非常挑剔.. 在这里查看如何传递数据 - api.jquery.com/jQuery.ajax
  • 我正在传递如下数据:数据:“ArrMenuId”+ JsArrayMenuId,我在我的问题中添加了方法名称 + jquery ajax 函数调用。
  • 我也用这个检查过:data: {ArrMenuId : JsArrayMenuId},但同样的问题。请帮帮我
  • 我不确定您是否可以将这样的数组从 javascript 传递给您的控制器。尝试将控制器方法更改为 DeleteAllMenu(string ArrMenuId) 并在 javascript 中执行 data: {ArrMenuId : JsArrayMenuId.join()}
  • 嗨,如果我按照你的方式做,它会显示 404 错误。 DeleteAllMenu(string ArrMenuId) -> DeleteAllMenu(MenuModel ArrMenuId) 如果我正在传递模型,那么它正在工作,而且您的建议 .join{} 也很好......感谢您的帮助 MR krilovich 。

标签: asp.net-mvc-4 null asp.net-web-api


【解决方案1】:

尝试改变

data: "ArrMenuId"+ JsArrayMenuId,

data: {ArrMenuId : JsArrayMenuId.join()} 

改变

public HttpResponseMessage DeleteAllMenu(Array ArrMenuId)

public HttpResponseMessage DeleteAllMenu(string ArrMenuId)

我不认为 javascript 数组会很容易地转换为 c# 数组,通过将其更改为此您将传递一个字符串。一旦你有了这个逗号分隔的字符串,你就可以在你的 c# 中把它变成一个数组

【讨论】:

  • 你的建议一切都对,只需要通过控制器传递模型,字符串类型显示404错误。
  • 您好,如果您有任何想法,我还有另一个问题。 stackoverflow.com/questions/18213485/…
猜你喜欢
  • 2013-04-19
  • 1970-01-01
  • 2016-04-02
  • 2021-04-03
  • 1970-01-01
  • 2019-05-07
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多