2017-11-14 7 views
-1

私は、パラメータに渡されたすべての情報をアップロードするために使用されるが、このエラーにAsp.netウェブAPIでの読書のJavascriptいるFormData値Httpresponsemessage

エラー

を取得している [HttpPost]で飾られたWeb APIを持っています

enter image description here

コントローラ

ここでは

は名前questionlistでJSONモデルを送信するJavaScriptで私がcontroller.Iで取得したい、これは(いるFormDataを読む)Here

からのJavascript

var data = new FormData(); 
var QuestionnaireList = []; 
QuestionnaireList.push({ 

      FieldID: $(this).attr("data-fieldid"), 
      attributeID: $(this).attr("data-attributeid"), 
      attributeValue: $(this).val(), 
      websitesID: 2, 
      OrderID: $('#orderid').val(), 
      orderbitID: $('#orderbidid').val(), 
      serviceId: $(this).attr("data-serviceid"), 
      subServiceId: $(this).attr("data-subserviceid"), 
      IsSubmit: IsSubmit, 
     }); 

data.append("questionlist", JSON.stringify(QuestionnaireList)); 
$.ajax({ 
        type: "POST", 
        url: path, 
        contentType: 'application/json',//"application/json; charset=utf-8", 
        processData: false, 
        dataType: "json", 
        data: data, 

        success: function (result) { 

         if (result.sucess == "save") { 
          alert('Your form has been saved.'); 

         } 
         else if (result.sucess == "Submit") { 
          alert('Your form has been submitted.'); 
          window.location.href = result.Url; 
         } 
        }, 
        error: function (result) { 
         alert('Oh no '); 
        } 

       }); 

ここでモデルクラスですAttributeValueTB

クラス

public class AttributeValueTB 
{ 
    public long attributeValueID { get; set; } 

    [Required] 
    [StringLength(200)] 
    public string attributeValueCode { get; set; } 

    public int FieldID { get; set; } 

    public int attributeID { get; set; } 

    public string attributeValue { get; set; } 

    public int websitesID { get; set; } 

    public long OrderID { get; set; } 
    public long orderbitID { get; set; } 
    public long serviceId { get; set; } 
    public long subServiceId { get; set; } 
    public string extra1 { get; set; } 
    public string extra2 { get; set; } 
    [StringLength(200)] 
    public string attributeCode { get; set; } 
    public bool isActive { get; set; } 

    public bool isShow { get; set; } 
    public bool IsSubmit { get; set; } 

    [Column(TypeName = "date")] 
    public DateTime? createDate { get; set; } 

    [Column(TypeName = "date")] 
    public DateTime? modifiedDate { get; set; } 

    public int? createBy { get; set; } 

    public int? modifiedBy { get; set; } 

    [Column(TypeName = "timestamp")] 
    [MaxLength(8)] 
    [Timestamp] 
    public byte[] Timestamp { get; set; } 
} 

答えて

0

あなたは限り、あなたはC#でモデルクラスを提供してきたように、手動で何かをシリアライズする必要はありません。

Json.NETは非常にスマートで、パラメータを自動的にシリアル化します。

[HttpPost] 
public HttpResponseMessage QuestionnaireSubmit(AttributeValueTB form) 
{ 
    // Form is serialized and can be used here  

} 

あなたもクッキーを読みたい場合は、この方法ではRequest.Cookiesを使用することができます。

+0

しかし、私はクッキーも読んでいますが、これはうまくいきません。 – DumpsterDiver

+0

私は自分の答えを編集しました。 – Baksteen

+0

これは動作していません。nullになっています。 – DumpsterDiver

0

あなたはない「形式」

HttpContent requestContent = Request.Content; 
string jsonContent = requestContent.ReadAsStringAsync().Result; 
entityclass obj= JsonConvert.DeserializeObject<entityclass>(jsonContent); 

から「jsoncontent」から情報を収集する必要があり、パラメータはまたあなたのコンテキストで動作するよう、あなたがクラスオブジェクトを使用している場合、次のように置くような方法を変更する必要があります。

[HttpPut] 
public HttpResponseMessage Put(int id) 
{ 
    HttpContent requestContent = Request.Content; 
    string jsonContent = requestContent.ReadAsStringAsync().Result; 
    entityclass obj= JsonConvert.DeserializeObject<entityclass>(jsonContent); 
    ... 
} 
+0

あなたのコードをテストしています。 – DumpsterDiver

+0

これは動作していません。 – DumpsterDiver

+0

どのようなエラーが表示されますか?必要なコンテンツがあるかどうかをjsoncontentで確認してください –

関連する問題