POSTを介してASP.NET MVCコントローラにGUIDの配列をパラメータとして渡す方法がわかりません。私は何が欠けていますか?これを行う簡単な方法はありますか?私のFooControllerでASP.NET MVCパラメータバインディング:リストまたは配列をコントローラメソッドにPOSTするには?
<form method="post" action="/Foo/Bar" >
<input name="itemIds" type="hidden" value="["8cd52539-c371-402a-b8be-12775f03ab68","8c97f9e0-666c-41ba-a914-72815745d1f0"]">
<button type="submit">Submit</button>
</form>
:HTMLになり
<form method="post" action="/Foo/Bar" >
<input name="itemIds" type="hidden" value="{{ ctrl.itemIds }}">
<button type="submit">Submit</button>
</form>
:私のAngularJSマークアップで
は、私が上記デバッグする場合
[System.Web.Mvc.HttpPost]
public ActionResult Bar([FromBody]Guid[] itemIds) => ...
、私のHTTPのPOSTがいるようです正解ですが、itemIds
はBar
になります。これを変えるのを手伝ってもらえますか? JSモデルにGUIDの配列が既にあるため、リクエストボディにデータを格納するには、より良い方法がありますか?ここで
私は 'Guid'が' string'として出現すると信じています。それであなたは 'Guid'にキャストします。奇妙な理由から、上記のようなデフォルトのMVCパラメータを使用すると、通常、型を安全にキャストできません。 – Greg
それは私を悲しくする。パラメータをGuid []の代わりに文字列に変更すると、バックスラッシュ、角括弧、カンマを含む単一の文字列が生成されます。よりエレガントな方法のアイデア - 私は文字列の配列またはリストを取得することができます少なくとも1つの文字列よりも? –
基本的なJsonオブジェクトを作成して渡すことができます。単一のデシリアライズで、狂ったエンコーディングの一部を避けることができます。'{Id = ''}'オブジェクトの型で、Idプロパティを持つ基本オブジェクトです。明らかに有効なJsonが役に立ちます。 – Greg