首页 > 解决方案 > 如何将参数 DataTable 从 mvc 应用程序传递到 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 应用程序发送的相同 DataTable 和在 webapi 中接收的相同 DataTable

源表创建如下

 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);
}

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

解决方案


您有以下步骤的一个选项,

1)从MVC控制器将您的DataTable序列化为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

推荐阅读