2011-10-31 8 views
0

私はここ数日間、いくつかの質問をしました。いくつかの研究の後、私はそれを少し絞ったかもしれません。Html.BeginFormフォームのラジオボタンの結果を含むルートの値

BeginフォームのHtml.BeginForm(action、controller、routeValues)オーバーロードを使用してRadioButtonの結果を渡す方法があるかどうかは疑問です。つまり、ユーザーが2つの選択肢のいずれかをクリックしました。私はその値をクエリ文字列に渡して、自分のアクションがそれを処理できるようにする必要があります。私のアクションは2つのパラメータをとりますが、これまでのところ、これらの値の1つをどのようにアクションに取り入れるかしかわかりません。ここにいくつかのコード例を示します。

<%Html.BeginForm("TemplateInfo","PatientACO",new { PopulationID = ViewData["POPULATIONID"], ActiveAll = "1"});   
%><input type="submit" value="Refresh" id="test" /><% 
%></div> 
<% Html.EndForm(); %> 

注:私は自分のActiveAll属性をautoに設定しています。私はそれを動的に設定する必要があります。 IEでは、ユーザーが設定する必要があります。その特定のアクションは2つのパラメータをとるためです。その行動にその動的価値をもたらす方法を見つけ出す必要がありますか?私はrouteValueディクショナリ、つまりroutValuesが一般的にこのことを実現する方法を見つけるのに役立つことを望んでいます。

これを行う方法がわかっていれば、本当に感謝しています。

UPDATE

私も、このアクションは、他の方法とビューによって呼び出されたので、私は、FormCollectionsを受け入れるようにコントローラを変更しないことを言及したかったです。何か案は?

UPDATEもう少し研究して、2

[OK]を、私は私がビューでラジオボタンのフォーム値を取得する方法であり、把握しようとしています何を推測するようにIそれをRouteValueDictionaryなどに追加できます。どのようなアイデアですか?

答えて

1

選択した値をクエリ文字列に渡す必要はありません。

ラジオボタンの名前がコントローラアクション内の変数と同じであれば、MVCはフォームの値をアクション内の変数にバインドします。あなたの例では

、フォームがあなたのラジオボタンの結果、お使いのコントローラのアクションがActionAllという名前のブール変数を持って、その後場合は、名前ActionAll、およびtruefalseの値を持つ2つのラジオボタンとラジオボタンのリストを持っている場合リスト選択はコントローラアクションのActionAll変数にバインドされます。あなたが提供した情報に基づいて

UPDATE

、あなたのアクションメソッドは次のように見える場合:

[HttpPost] 
public ActionResult TemplateInfo(bool ActionAll, ...) 

その後、あなたは次のようにあなたのビューでボタンリストからActionAll変数を渡すことができます:

<input type="radio" value="true" id="ActionAll" name="ActionAll" /> All 
<input type="radio" value="false" selected="selected" id="ActionAll" name="ActionAll" /> Not All 

アクションにブレークポイントを設定すると、ActionAllが設定されていることがわかりますリスト内の選択されたラジオボタンに基づいて選択する。 ActionAllがブール値でない場合は、適切なタイプの値をActionAllに渡すためにリストを適切に調整します。

+0

あなたは本当ですか?私はそれがそれを試みる多くのエラーに遭遇したので、それがそのように動作しないことをかなり確信しています。私はここにすべてそれを知っていると主張することはありませんが、私はそれをそこに入れる方法を無駄に探している理由があります。とにかく、私は自分のコードを変更してそのコードを取り除き、それを修復しました。あなたがあなたの答えをもう少し明確にするなら、私はこの質問に答えてマークします。 – SoftwareSavant

関連する問題