2009-04-20 20 views
0

我在視圖上有許多動態創建的字段。比方說在視圖中使用MVC Html.RadioButton

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

在我的控制我希望看到什麼樣的價值觀用戶已經選擇了每個人,但我發現使用的FormCollection我只拿回「車款」,「房款」,和「CC付款」。除非我將這些輸入定義爲控制器變量,否則我不會回到與這些單選按鈕選擇相關的實際值。不幸的是,這些單選按鈕是動態生成的,包括他們的名字,所以這不是一個選項。任何處理這個問題的想法?

回答

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)); 
     ... 
    } 

顯然,您需要添加錯誤檢查等,您還可以通過在ValueProvider鍵遍歷就像你上的Request.Form。

0

好吧我想出瞭如何在控制器中做到這一點,以爲我會分享。

在我的示例中,請求[「CarPayment」]將能夠從RadioButton集合中動態提取值。