我有一个强类型视图正在工作并接收从控制器发送的模型。
除了模型数据,我还需要记录用户从一组复选框中点击的内容。这些复选框是在加载视图时创建的,但未绑定到模型。
使用普通表单提交(发布),不会将复选框值添加到HTTP消息正文中吗?
使用强类型视图时,似乎不会发生这种情况。
除了模型之外,用户选择是否有可能以某种方式被发送回控制器?
更新: 对不起,如果这个不清楚。基本上我有2个数据存储库 - 一个是我自己的自定义数据库,用于存储用户交互的记录,另一个是cms。
cms包含用于生成复选框的数据,数据库存储用于生成绑定到视图的模型的数据。
在我的模型中,我有一个id,我可以使用它来查询cms以获取生成复选框所需的数据,以便在视图中完成此操作。这就是为什么事先不知道复选框的计数和名称。
我需要将cb vales存储为逗号分隔的列表intje db,以便操作系统为什么要解析表单数据。
原来这很容易......
的Request.Form
诀窍
答案 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个选项。
就像@KevDevMan所说的那样。将其添加到模型中。模型上的bool值就可以了。但如果您不需要,请尝试下一个。
这是下一个。给这些复选框添加唯一名称(name =“chkbox1”,name =“chkbox2”),并将操作中的那些添加为具有相同变量名称的参数(请注意,根据我的经验,我发现这不区分大小写)。所以你的行动就是这样。
public ActionResult AfterSumbit(MyModel model, bool chkbox1, bool chkbox2)
或者如果你想要复选框的值
public ActionResult AfterSubmit(MyModel model, string chkbox1, string chkbox2)
这是由.net自动完成的,所以请放心,它会相应地放在变量上。