1

私はこのようなコントローラを実装しました:

[HttpPost]
[ActionName("DefaultAction")]
public HttpResponseMessage Post(Person obj){
}

Person はこのクラスです:

public class Person
{
   public String Name { get; set; }
   public byte[] ImageStream { get; set; }
}

クライアント側で、新しい Person を投稿するために次の呼び出しを行います。

var person={
            "Name":"Test",
            "ImageStream":"AQID"
}

$.ajax({
            type: "POST",
            url: "/person",
            dataType: "json",
            contentType: "application/json",
            data: JSON.stringify(person),
            success: function (result) {
                console.log(result); //log to the console to see whether it worked
            },
            error: function (error) {
                alert("There was an error posting the data to the server: " + error.responseText);
            }
});

問題は、ImageStream が null に設定された Person オブジェクトを受け取ることです。

私が使用するImageStream文字列が正しいかどうかをテストするために、これを試しました:

Person p=new Person();
p.Name="Test";
p.ImageStream=new byte[]{1,2,3};
String json=JsonConvert.SerializeObject(p);
4

1 に答える 1

2

Javascript コードでは、C# メソッドにバイト配列を渡すのではなく、文字列を渡します。それらは同じものではありません。バイト配列を渡したい場合は、値が 0 から 255 までの数値の実際の配列である必要があります。

次のようにしてみてください。

var person = {
    "Name": "Test",
    "ImageStream": [65,81,73,68]
}
于 2013-08-30T14:10:25.820 に答える