クライアント用のJSONソリューションを実装する際に、最近問題が発生しました。アクションパラメータ名がモデルのプロパティ名と一致する場合、バインダはANYプロパティをバインドできません。MVC3 Json Bind Bug?
例:
コントローラ人々
public ActionResult SetEmails(Person emails){
...
return Content("");
}
パラメータ名は、「電子メール」と呼ばれていたので、それは、「電子メール」と呼ばれる人物モデルのプロパティ名と一致..バインダーは失敗しますが、 ..
を理由として任意の表示を与えるものではありません。彼らは人
public class Person {
public string Name { get; set; }
public List<string> Emails { get; set; }
public Person() {
Emails = new List<string>();
}
}
と呼ばれるモデルを持っていました
これはバグですか、「機能」ですか?
私の質問は、引数名がバインダーとどのように競合するかという点です。名前は、それがjsonデータと照合するスキーマを定義するクラス型であるので重要ではありません。なぜバインダーは引数に名前を付けるか、または引数そのもののクラス型内のプロパティ名と一致する必要がありますか?
あなたは呼び出し元のjsコード、または少なくともあなたが投稿しているJSONを投稿できますか? –
jsonは次のようになります。 {"名前": "John"、 "Emails":["[email protected]"、 "test2 @ test。com] "}} jsonは、私が言ったように、アクション引数名を電子メール(モデルプロパティ名と一致)から変更した後は一致したものにはうまくいきました。なぜこれがうまくいかないのか分かりません。または、少なくとも、ヌルプロパティ値を持つインスタンス化されたクラスの代わりに例外をスローしてください。? – Mike