0

I have 2 models like this.

 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; }        
    }

As you can see QuestionId is in both the models. How can I render it in view. There are multiple questions. Question Moldel has data in initial run but UserAnswer doesn't.

How can I combine these 2 models so that I can use it as IEnumerable in view. Ans1,Ans2,Ans3,Ans4 has text and AnsVal in UserAnswer will get its value from Raiobutton.

4

2 回答 2

2

做一个像下面这样的组合类..我不确定这是否完美..任何建议都是可以接受的。

public class QuestionAnswerViewModel 
{ 
    public Question Question {get;set;}
    public ICollection<UserAnswer> Answers {get;set;}
}
于 2013-09-26T05:52:33.793 回答
0

您想创建一个表示组合模型对象的 ViewModel。这样可以保持干净,您的模型就是模型,传递给视图的可以是模型,但在许多情况下,ViewModel 的概念将使事情更容易设计,同时保持代码松散耦合和干净。这也使对 View 不重要的事情排除在等式之外,也就是模型中的特定属性,例如 CreatedDate 不应该传递给 View,特别是因为 View 请求会将值作为 null 传回,因为它不是在视图中使用,因此不会在回发时填充。这可能会导致您使用 CreatedDate 的空值更新数据库,因为它没有在视图中使用。

也许您的解决方案中有一个模型类库?如果这样做,请创建另一个名为 MyNamespace.Web.ViewModels 或类似名称的类库。此外,您应该考虑使用 AutoMapper 之类的工具,该工具将在对控制器的 View 请求中填充 ViewModel,并在 View 回发到控制器时填充模型。

于 2013-09-26T05:53:14.330 回答