2009-04-20 6 views
0

ビューに動的に作成されるフィールドがいくつかあります。私は、ユーザーがそれぞれのために選択したが、私はFormCollectionを使用して、私は唯一のバック「車の支払い」、「ハウス支払い」を取得することがわかり、および「CC支払いどのような値を見たい私のコントローラでMVC Html.RadioButtonをビューで使用する

Car Payment [1] [2] [3] 
House Payment [1] [2] [3] 
CC Payment [1] [2] [3] 

を言うことができます"これらの入力をコントローラー変数として明示的に定義しない限り、ラジオボタンの選択に関連する実際の値は返されません。残念ながら、これらのラジオボタンは名前を含めて動的に生成されるので、これはオプションではありません。この問題に対処するためのアイデアはありますか?

答えて

1

私はあなたが実際には、リクエスト自体のパラメータを参照するのではなく、コントローラ上でValueProviderを使用するべきだと思います。 ValueProvider実装をコントローラに提供するだけで、値プロバイダを使用することで、単体テストを簡単に行うことができます。

... 
    var provider = new FormCollection(); 
    provider["CarPayment"] = "1"; 

    var controller = new PaymentController(); 
    controller.ValueProvider = provider.ToValueProvider(); 

    var result = controller.Create(); 
    ... 


    public ActionResult Create() 
    { 
     int carPaymentType = (int)this.ValueProvider["CarPayment"].ConvertTo(typeof(int)); 
     ... 
    } 

もちろん、あなたはまた、あなたがのRequest.Formの場合と同様にValueProvider上のキーを反復処理できるなど、エラーチェックを追加する必要があります。

0

私はコントローラでこれを行う方法を理解しました。私が共有すると思った。

リクエスト[CarPayment]は、私の例ではRadioButtonコレクションから値を動的に抽出することができます。

関連する問題