【问题标题】:How to simplfy the passing of parameter如何简化参数的传递
【发布时间】:2018-06-14 21:28:39
【问题描述】:

我在 c# 中有这些方法,需要 3 个参数

public void Delete_AgentTools(int ID,int UAM,int mode)
    {
       some code etc.
    }

我使用javascript ajax调用这个方法并传递参数

function Delete_AgentTools(toolAccess, toolId, UAM) {
$.ajax({

    type: "POST",
    url: "IROA_StoredProcedures.asmx/Delete_AgentTools",
    data: "{'toolAccess':'" + toolAccess + "', 'toolId':'" + toolId + "', 'UAM':'" + UAM + "'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",

    success:function()
    {
        alert("Tool has been successfully delete");
    },
    error: function (XMLHttpRequest)
    {
        alert("error in Delete_AgentTools()");
        console.log(XMLHttpRequest);
    }

});
}

你看我想简化我如何在 javascript 中传递参数。是否可以将其作为object 传递给c# 或简化parametersjavascript 中的传递

【问题讨论】:

  • 你不想手动创建 JSON,那是灾难的根源。查看JSON.stringify。您可以从 JS 对象中获取 JSON。

标签: javascript c#


【解决方案1】:
function Delete_AgentTools(toolAccess, toolId, UAM) {
    var data = {};
    data.mode = toolAccess;
    data.ID = toolId;
    data.UAM = UAM;

    $.ajax({

        type: "POST",
        url: "IROA_StoredProcedures.asmx/Delete_AgentTools",
        data: JSON.stringify(data),
        contentType: "application/json; charset=utf-8",
        dataType: "json",

        success:function()
        {
            alert("Tool has been successfully delete");
        },
        error: function (XMLHttpRequest)
        {
            alert("error in Delete_AgentTools()");
            console.log(XMLHttpRequest);
        }
    });

无需更改您的 C# 代码。

【讨论】:

  • 如果可能的话,我希望在 c# 的参数中使用类或对象
  • 我个人认为data = {mode: toolAccess, ID: toolId, UAM}在单独的行中更具可读性。
  • 创建一次具有int ID,int UAM,int mode 等属性的类,并将该类用作参数而不是三个单独的参数。
【解决方案2】:

您可以使用 JSON.stringify 将 js 对象转换为 JSON

var data = {};
data.toolAccess = value1;
data.toolId = value2;
data.UAM = value3;

$.ajax({

    type: "POST",
    url: "IROA_StoredProcedures.asmx/Delete_AgentTools",
    data: JSON.stringify(data),
    contentType: "application/json; charset=utf-8",
    dataType: "json",

    success:function()
    {
        alert("Tool has been successfully delete");
    },
    error: function (XMLHttpRequest)
    {
        alert("error in Delete_AgentTools()");
        console.log(XMLHttpRequest);
    }

});

【讨论】:

  • 如果可能的话,我希望在 c# 的参数中使用类或对象
  • 您无需对 c# 代码进行任何更改。但是,如果你想在你的 c# 代码中做一些类似解构赋值的事情,也许你可以用你所有的属性创建一个模型类,然后序列化你的 C# 类。
猜你喜欢
  • 2016-07-10
  • 2020-05-20
  • 2021-10-31
  • 2021-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
相关资源
最近更新 更多