我需要使用以下发布的数据或其变体。基本上,我需要发布一个可变数量的键值对,它们代表一个问题ID和答案字符串。
如何编写ASP.NET MVC2控制器方法签名以接受未知数量的键值对?
attachmentId=8809&question_712=&question_713=&question_714=&question_715=&question_716=&question_717=&question_719=&question_720=&question_721=&question_722=&question_723=&question_724=&question_725=&question_726=&question_727=&question_731=&question_738=&question_739=&question_741=&question_742=&question_743=&question_744=&question_745=&question_746=&question_747=&question_748=
请注意,在此示例中,有26个带有空值的问题键。可能有更多或更少的密钥,它们可能有也可能没有价值。我可以重新设计客户端发送数据的方式,因此如果最好的解决方案是重新考虑它的发送方式,我会对此持开放态度。
答案 0 :(得分:2)
这基本上是FormCollection
收集的数据。默认情况下,它在自动生成的控制器中使用。即public ActionResult Edit(int id, FormCollection collection)
答案 1 :(得分:1)
使用数组。默认的模型绑定器可以检测数组。
对于html标记名称的model.questions [0] .key model.questions [1] .value等,然后构建一个遵循这些约定的对象。
public class QuestionUpdateModel{
public int attachmentID{get;set;}
public QuestionPair[] Questions{get;set;}
}
public class QuestionPair{
public int key{get;set;}
public string value{get;set;}
}
之后,您的控制器应接受QuestionUpdateModel类型的参数。模型绑定器应该处理其余的事情。确保按顺序对它们进行索引,以便它可以创建没有空条目的数组。