我在视图上有许多动态创建的字段。让我们说
Car Payment [1] [2] [3]
House Payment [1] [2] [3]
CC Payment [1] [2] [3]
在我的控制器中,我想查看用户为每个选择的值,但我发现使用FormCollection我只返回“Car Payment”,“House Payment”和“CC Payment”。除非我明确地将这些输入定义为控制器变量,否则我不会获得与这些radiobutton选择相关的实际值。不幸的是,这些单选按钮是动态生成的,包括它们的名称,所以这不是一个选项。处理这个问题的任何想法?
答案 0 :(得分: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上的键。
答案 1 :(得分:0)
好的,我想知道如何在控制器中执行此操作,我想我会分享。
Request [“CarPayment”]将能够在我的示例中从RadioButton集合中动态提取值。