代码之家  ›  专栏  ›  技术社区  ›  Al Katawazi

在视图中使用mvc html.radiobutton

  •  0
  • Al Katawazi  · 技术社区  · 17 年前

    我在视图上动态创建了许多字段。让我们说

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

    在我的控制器中,我想看看用户为每一个选择了什么值,但是我发现使用formCollection,我只得到“汽车付款”、“房屋付款”和“CC付款”。除非将这些输入明确定义为控制器变量,否则我不会返回与这些单选按钮选择相关联的实际值。不幸的是,这些单选按钮是动态生成的,包括它们的名称,所以这不是一个选项。处理这个问题有什么想法吗?

    2 回复  |  直到 17 年前
        1
  •  1
  •   tvanfosson    17 年前

    我认为您确实应该在控制器上使用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上的键。

        2
  •  0
  •   Al Katawazi    17 年前

    好吧,我在控制器里找到了怎么做的,我想我会分享。

    在我的示例中,请求[“Carpayment”]将能够动态地从RadioButton集合中提取值。