1

ページに 2 つのフォームがあります。そのうちの 1 つは送信時にアクションを呼び出すためにMainForm使用され、もう 1 つは送信ボタンのない一連のラジオで構成されています ( の表示をトリガーするために使用されます)。サーバー側の検証中にエラーが発生した場合は、コントローラーからビューを返します。ただし、これによりラジオの選択が解除されます。@using (Html.BeginForm...RadioFormMainForm

私が考えているのは、選択した値を取得してRadioForm、戻った後に再度設定できるようにすることです。どうすればいいですか?の状態を永続化するより良い方法はありRadioFormますか?

4

3 に答える 3

2

ブラウザーは、送信されたフォームの外部にフォーム値を投稿しないため、サーバー側でこれを行う方法はありません。1 つの解決策は、隠しフィールドを維持し、メイン フォーム内の jQuery でこれを更新することです。

@Html.HiddenFor(m => m.RadioValue, new { @class = "radio-tracker" })

各ラジオ ボタンに「radio-hidden」などのクラスを指定し、次を使用します。

$('.radio-hidden').click(function() {
    $('.radio-tracker').val($(this).val());
});

次に、呼び出されたメインフォームのモデルにプロパティを作成するRadioValueと、ポスト時に選択したラジオ ボタンの値にバインドされます。

その後、再びビューに戻ったときに、この値を使用してラジオ ボタンを事前設定できます。

または、AJAX の使用を検討することもできます。

于 2013-09-16T21:05:57.587 に答える
0

ラジオを別のフォームに載せる代わりに、送信するフォームにラジオを載せる必要があります。このようにして、これらの値をビューに戻すことができます。

于 2013-09-16T20:55:29.103 に答える
0

Ajax.BeginForm代わりにHtml.BeginForm、更新対象を指定できるメソッドを使用できます。これにより、送信されたフォームのみを更新でき、ラジオ フォームには影響しません。

@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "result" }))

http://msdn.microsoft.com/en-us/library/system.web.mvc.ajax.ajaxextensions.beginform(v=vs.108).aspx

于 2013-09-16T21:05:41.370 に答える