asp.net mvc
にフォームアレイを正常に投稿すること この記事では、C#および.NETフレームワーク4.5.1以降を使用して、ASP.NET MVCアプリケーションに配列を含むフォームデータを送信するときに発生した課題に対処します。 焦点は、コントローラーのアクションメソッド内でフォームアレイデータを正しく投稿および取得することにあります。 asp.net mvcでのアレイバインディングの理解 asp.net MVCでは、アレイはコレクションとして処理されます。通常は
またはです。 これらのコレクションにフォームデータを正しくバインドするには、特定の構文とモデル宣言が必要です。
アレイ投稿を成功させるためのIEnumerable
IList
改訂コード
フォームアレイの提出と取得を成功させるための改善されたアプローチを次に示します。
フォームマークアップ(例):コントローラーアクション方法:
<code class="language-html">@using (Html.BeginForm("Save", "ConnectBatchProduct", FormMethod.Post)) { <!-- ... your form elements here ... --> }</code>
モデル宣言:
<code class="language-csharp">[HttpPost] public ActionResult Save(ConnectBatchProductViewModel model) { // Process the model.BatchProducts collection here // ... }</code>
モデルには、配列データを正しく受信するために(または
)として宣言されたプロパティが含まれていることを確認してください。ConnectBatchProductViewModel
変更されたjqueryスクリプト(例):IList<BatchProductViewModel>
IEnumerable<BatchProductViewModel>
このjQueryコードは、各配列要素に対して一意のインデクサーを動的に生成し、適切なバインディングを確保します。 A属性を持つすべての要素を繰り返し、属性を更新して、一意のインデックスを含めます。
<code class="language-javascript">$("#addrow").click(function() { var index = (new Date()).getTime(); var clone = $('#NewBatchProduct').clone(); clone.find('[name]').each(function() { $(this).attr('name', $(this).attr('name').replace(/\[#\]/g, '[' + index + ']')); }); $("table.order-list").append(clone); });</code>主要な考慮事項:
name
name
モデルプロパティタイプ:重要なステップは、モデルプロパティをまたは
として定義することです。ここで、IList<T>
、IEnumerable<T>
など)を反映していることを確認します。変更されたjQueryスクリプトは、これを達成するのに役立ちます
T
以上がASP.NET MVCにフォームアレイを正常に投稿するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。