处理一个项目,该项目要求我在同一屏幕上拥有许多相关数据集合。
示例结构:
public class QuestionViewModel
{
public string UserName {get; set;}
public IEnumerable<Question> Questions {get; set;}
}
public class Question
{
public string Text {get; set;}
public string Answer {get; set}
//Yes, in this example attachments are directly related to the question and not
//a parent entity
public IEnumerable<AttachmentInfo> Attachments {get; set;}
}
public class AttachmentInfo
{
public string Description {get; set;}
public HttpPostedFileBase PostedFile {get; set;}
}
使用上述结构,您最终会得到类似于:
的标记<input type="file" name="model.Questions[0].Attachments[0].Description" />
<input type="file" name="model.Questions[0].Attachments[0].PostedFile " />
要添加其他附件,您必须适当更新索引,如下所示:
<input type="text" name="model.Questions[0].Attachments[1].Description" />
<input type="file" name="model.Questions[0].Attachments[1].PostedFile " />
为什么模型绑定会像这样工作?
我已经找到了一个特定的原因,模型绑定就像这样,但我找不到任何东西,也无法想到使用像model.Questions.Attachments.Description
之类的模式无法正常工作的情况。模型绑定到IEnumerable<string>
已经对简单类型做了类似的事情,如果它们的输入元素具有分配给它们的相同名称。