Asp.Net强类型视图和html重新

时间:2014-02-26 23:29:24

标签: c# asp.net-mvc asp.net-mvc-4

我有一个强类型视图正在工作并接收从控制器发送的模型。

除了模型数据,我还需要记录用户从一组复选框中点击的内容。这些复选框是在加载视图时创建的,但未绑定到模型。

使用普通表单提交(发布),不会将复选框值添加到HTTP消息正文中吗?

使用强类型视图时,似乎不会发生这种情况。

除了模型之外,用户选择是否有可能以某种方式被发送回控制器?

更新: 对不起,如果这个不清楚。基本上我有2个数据存储库 - 一个是我自己的自定义数据库,用于存储用户交互的记录,另一个是cms。

cms包含用于生成复选框的数据,数据库存储用于生成绑定到视图的模型的数据。

在我的模型中,我有一个id,我可以使用它来查询cms以获取生成复选框所需的数据,以便在视图中完成此操作。这就是为什么事先不知道复选框的计数和名称。

我需要将cb vales存储为逗号分隔的列表intje db,以便操作系统为什么要解析表单数据。

原来这很容易......

的Request.Form

诀窍

3 个答案:

答案 0 :(得分:1)

您应该将复选框添加为强类型对象的属性。

在响应表单数据中返回值。但添加属性是最好的。如果您无法将属性直接添加到类中,请使用分部类。

答案 1 :(得分:1)

您可以为模型中的复选框添加属性,然后从表单数据中填充它们。

您还可以在操作方法中为复选框添加参数,然后从表单数据中填充它们。例如:

public ActionResult MyAction(MyModel model, bool check1, bool check2) {

您还可以从表单数据中选取值,而无需定义任何属性或参数:

bool check1 = Request.Form["check1"] == "on";
bool check2 = Request.Form["check2"] == "on";

答案 2 :(得分:1)

我能想到的2个选项。

  1. 就像@KevDevMan所说的那样。将其添加到模型中。模型上的bool值就可以了。但如果您不需要,请尝试下一个。

  2. 这是下一个。给这些复选框添加唯一名称(name =“chkbox1”,name =“chkbox2”),并将操作中的那些添加为具有相同变量名称的参数(请注意,根据我的经验,我发现这不区分大小写)。所以你的行动就是这样。

    public ActionResult AfterSumbit(MyModel model, bool chkbox1, bool chkbox2)
    
  3. 或者如果你想要复选框的值

        public ActionResult AfterSubmit(MyModel model, string chkbox1, string chkbox2)
    

    这是由.net自动完成的,所以请放心,它会相应地放在变量上。