2013-08-16 104 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; 
} 
相關問題