2013-08-16 60 views
1

我有一个测验样式的MVC应用程序。我目前正在向视图传递:MVC模型应该包含仅用于响应的内容

public class Question{ 
    public int QuestionId; 
    public string QuestionText; 
    public string AnswerText; 
    public int Answer; 
} 

但是,所有在响应中我只需要(和获取)两个int属性,以及空字符串值。所以我的问题是,你认为我的模型应该只包含两个int属性,我应该在ViewData/ViewBag的字符串属性中传递?

+0

看一看的ViewModels。如果你的应用程序不是一个复杂的应用程序,使用ViewData/ViewBag也很好。但是,请勿将您的问题模型公开为直接查看。有危险。 –

+0

下面的建议对你有帮助吗? –

回答

0

回答你的问题,是的,我相信它应该。在这种情况下,我会创建一个被从视图返回Answer类里包含了你所感兴趣的2 INT属性:

public class Answer{ 
    public int QuestionId; 
    public int Answer; 
} 

接收此可以接受Answer类型的参数,你的控制器动作,其模型绑定将正确填充。如果您不需要从视图返回的字符串属性,请不要传递它们。如果您确实需要它们,请将它们添加到Answer课程中。根本不需要使用ViewData或ViewBag。根据@ emre-nevayeshirazi的建议,我也会将它们重命名为QuestionViewModelAnswerViewModel。然后,我将它们映射到它们的等价域类,然后将它们传递到域图层。

0

斯普利特视图模型像下面

public class Question : QuestionAnswerId 
{ 
    public int QuestionText; 
    public int AnswerText; 
} 

public class QuestionAnswerId 
{ 
    public int QuestionId; 
    public int Answer; 
} 
相关问题