MyViewModel
ASP.NET MVC 3 と Razor を使用して、クラスに対して厳密に型指定されたビューを作成しました。ビュー内には、ラジオ ボタンのグループで構成される AJAX フォームがあります。その下には、 のデータを収集する通常の HTML フォームがありますMyViewModel
。AJAX フォームで選択されているラジオ ボタンに応じて、HTML フォームを既定値のセットまたは別のセットで更新したいと考えています。AJAX フォームで、2 つのデータを投稿しようとしています: 1) 選択されたオプションを表す値 (ラジオ ボタンのvalue
パラメーターに基づく)、および 2)Model
ビューから。受け取ったオプションに基づいてコントローラー アクションでモデルを更新し、更新されたモデル オブジェクトをパラメーターとして部分ビューを返すようにします。どうすればいいですか?私の試みのAJAXフォームのコードは次のとおりです。
@using (Ajax.BeginForm("MyAction", "MyController",
new AjaxOptions {
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "createForm"
}))
{
<div id="formOptions">
@foreach (Option op in Model.GetOptions()) {
<div class="editor-field">
@Html.RadioButton("option", op.OptionType, false, new { @id = op.ID, @name = op.ID, @title = @op.Description, @onfocus = "javascript:$(this).closest('form').find(':submit').first().click()" })
<label for="@op.ID">@op.Name</label>
</div>
}
</div>
@Html.Hidden("model", Model)
<input type="submit" value="Select" style="display:none;" />
}
私の問題はmodel
、HttPost アクション メソッドのパラメーターが null であることです。ただし、option
パラメーターは正しく渡されるようです。入力を使用してはならHtml.Hidden
ない方法で使用しているかどうか、または問題が何であるかはわかりません。必要に応じて、さらにコードを投稿できます。
これは、このようなことを行う最初の試みであるため、(一見) 似たような質問をたくさん読んだ後でも、やりたいことの解決策を解読できません。JSON エンコーディング、JQuery の使用など、さまざまなことを目にしますが、それらが必要かどうか、または MVC 機能を使用してこれを実現できるかどうかはわかりません (既に使用されているものを再コーディングしたくありません)。 MVC に組み込まれています 3)。誰かが私を正しい方向に向けたり、小さなコード例を挙げたりできれば幸いです。そして、私の最終目標が何であるかを考えると、オプション コントロールに基づいてフォームを非同期的に更新するためのより良い方法があれば、非常に興味があります。ありがとう!
編集:
また、HttpPost を使用したリクエストがコントローラーに到達しないことにも気付きましたが、HttpGet は到達します。誰かいる?これは私を夢中にさせています!
コントローラーの追加方法:
public PartialViewResult CreateForm(OptionType opType, MyViewModel model) {
model.ApplyOptionValues(opType);
return PartialView("_CreateForm", model);
}