我有2个这样的模特。
public partial class Question
{
public int QuestionId { get; set; }
public string QuestionText { get; set; }
public string Ans1 { get; set; }
public string Ans2 { get; set; }
public string Ans3 { get; set; }
public string Ans4 { get; set; }
}
public partial class UserAnswer
{
public int UserAnsId { get; set; }
public Nullable<int> QuestionId { get; set; }
public Nullable<int> UserId { get; set; }
public Nullable<int> AnsVal { get; set; }
}
正如您所看到的,QuestionId在两个模型中。如何在视图中呈现它。有很多问题。问题Moldel在初始运行时有数据,但UserAnswer没有。
如何组合这两个模型,以便我可以在视图中将其用作IEnumerable。 Ans1,Ans2,Ans3,Ans4有文本,UserAnswer中的AnsVal将从Raiobutton获取其值。
答案 0 :(得分:2)
制作如下所示的组合课程。我不确定这是否完美。任何建议都是可以接受的。
public class QuestionAnswerViewModel
{
public Question Question {get;set;}
public ICollection<UserAnswer> Answers {get;set;}
}
答案 1 :(得分:0)
您想要创建一个表示组合模型对象的ViewModel。这样可以保持清洁,模型就是这样,模型,传递给视图的内容可以是模型,但在很多情况下,ViewModel的概念将使设计更容易,同时保持代码松散耦合和清洁。这也保留了对View不重要的东西,即模型中的特定属性,例如CreatedDate可能不会传递给View,特别是因为View请求会将值传回null,因为它不是在视图中使用,因此不会在回发中填充。这可能导致您使用CreatedDate的空值更新数据库,因为它未在视图中使用。
也许你的解决方案中有一个Model类库?如果这样做,请创建另一个名为MyNamespace.Web.ViewModels的类库或类似的类库。此外,您应该考虑使用像AutoMapper这样的工具,它将ViewModel上的View请求填充到Controller,并在View回发上填充模型到控制器。