簡體   English   中英

啟用ASP.NET Web Api以同時容納JSON和Form編碼數據

[英]Enabling ASP.NET Web Api to accommodate both JSON and Form encoded data

我在我的MVC應用程序中內置了一個ASP.NET web api,它當前接收了作為表單編碼數據的請求所附帶的所有數據。

我收到這個作為FormDataCollection對象並解析如下:

public string Post(FormDataCollection data)
{
    var first = data.Get("FirstName");
    //for every supported field.
}

我的回復總是一個JSON字符串。

這很好,我想繼續適應這一點,但我希望我的用戶能夠發送帶有內容類型頭應用程序/ JSON的JSON 以便我可以支持這兩者。

我如何以簡單的方式容納兩者? 它是否必須涉及檢查內容標題並使用不同的代碼來提取每種情況下的屬性?

asp.net模型綁定器為您處理綁定。 定義一個代表您的模型的類:

public class Person
{
  public string Firsname{ get; set; }
}

然后讓你的控制器動作將此視圖模型作為參數:

public class PersonController : ApiController
{

  public void Post(Person model)
  {
    ...
  }
}

最后,您可以使用jquery ajax或您選擇的任何內容發布。 例如

$.ajax({
type: 'POST',
url: '/api/person',
cache: false,
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ Firstname: "John Doe" }),
success: function() {
    ...    
   }
});

嘗試使用如下的模型類;

public class MyTargetModel
{
    public string FirstName { get; set; }
}

public string Post(MyTargetModel model)
{
    var first = model.FirstName;
    //for every supported field.
}

當我說模型課時,我指的是POCO課程。 ASP.NET MVC和Web API應該能夠根據需要將請求數據解析到類中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM