ホイールを外して再作成する前に、自動的にこれを行う方法があるかどうか誰にでも教えてください。ASP.Net Web APIに渡すフォームをシリアライズ
public class ParentViewModel {
public int ID { get; set; }
public string Title { get; set; }
public ChildViewModel[] Children { get; set; }
}
public class ChildViewModel {
public string Description { get; set; }
public int Severity { get; set; }
}
私は、パラメータとしてParentViewModelを取るウェブAPI関数呼んでいる:
[HttpPost]
public void Test([FromBody]ParentViewModel vm) {
}
これを私は別のオブジェクト型の配列を含むビューモデル、このようなビットを持っています動的な数の子エンティティを持つことができるWebページから呼び出されます。ページはasp.net/Razorを使用して作成されているので、これらは、このようなHTMLと入力フィールドにバインドされています。私は、Web APIを呼び出すために、AJAXを使用してJavaScriptのイベントハンドラを持っている
<input aria-invalid="false" class="form-control" id="Children_0__Description" name="Children[0].Description" value="test" type="text">
。私はそれにフォームデータを渡したいので、フォームをシリアル化し、オブジェクトに変換するためにdeparamを使い、オブジェクトのJSON.stringifyを呼び出します。残念ながら、これは "Children [0] .Descriptionのようなものを私のためのオブジェクトの配列に変換しないので、Web APIにヒットするとビューモデルの配列プロパティにマップされません。
{
"ID": "12",
"Children[0].Severity" : "3",
"Children[0].Description" : "Test",
"Children[1].Severity" : "5",
"Children[1].Description" : "Another",
"Title": "Hello"
}
の代わりに、このような:このよう
{
"ID": "12",
"Children" : [
{"Severity":"3", "Description":"Test"},
{"Severity":"5", "Description":"Another"},
],
"Title": "Hello"
}
私は、JSONを変換するいくつかのコードを記述することを約あったが、私はどちらかの最初の場所で何か間違ったことをやっている推測しています、または私のためにこれを行う何か - 何か提案がありますか?
ありがとうShashank。同じように聞こえるが、私の場合はすでにcontentType属性がある –