如何将参数DataTable从MVC应用程序传递到Web API?

时间:2019-02-13 08:51:31

标签: c# asp.net-web-api

我需要将DataTable作为参数从我的MVC应用程序传递到Web api。

我正在寻找一些代码

 public void ConvertToSomeType(DataTable dt)

 {
 /*This code would be on mvc application 
 }


 public HttpActionResult GetData(SomeType st)
{

/*Here method should be convert sometype to DataTable*/

}

所以我期望从mvc应用程序发送的相同数据表和webapi中接收的相同数据表

创建的源表如下

 DataTable dt = new DataTable();
 dt.column.add("Id");
 dt.column.add("Name");
 dt.rows.add("1","abc");
 dt.rows.add("1","abc");

期望在webapi中使用相同的数据表

public HttpActionResult GetData(SomeType st)
{

DataTable dt = SomeMethod(st);
}

1 个答案:

答案 0 :(得分:1)

您可以通过以下步骤选择一个选项,

1),将数据表从MVC Controller序列化为JSON,例如

public ActionResult GetDatatable()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("Id");
    dt.Columns.Add("Name");
    dt.Rows.Add("1", "abc");
    dt.Rows.Add("1", "abc");

    string json = JsonConvert.SerializeObject(dt);

    //Call the Web API Controller action method with above string parameter via WebRequest or HttpClient
}

2)将输入的字符串json反序列化为DataTable,如

public IHttpActionResult GetData(string json)
{
    DataTable dt = JsonConvert.DeserializeObject<DataTable>(json);
}

注意:您需要通过在软件包管理器控制台中使用以下命令来为newtonsoft.json安装NuGet软件包

Install-Package Newtonsoft.Json -Version 12.0.1