2009-10-29 149 views
0

我該如何着手將兩組數據傳遞給ASP.NET MVC中的視圖?如何將兩組數據傳遞給視圖?

我已經嘗試了幾件事,都沒有工作,所以我來簡單的結論:我做錯了。

我有2個查詢:

callRepository.FindOpenCalls()callRepository.FindAllMyCalls(user)

,我想通過2的局部視圖,以出放兩組數據的一個視圖(OpenCalls.ascx和AssignedCalls.ascx分別地)。

我想在我的CallsController.vb中使用Index()函數來做到這一點。

目前我有:

' 
' GET: /Calls/ 

<Authorize()> _ 
Function Index() As ActionResult 
    ViewData("OpenCallCount") = callRepository.CountOpenCalls.Count() 
    ViewData("UrgentCallCount") = callRepository.CountUrgentCalls.Count() 
    ViewData("HighCallCount") = callRepository.CountHighCalls.Count() 
    ViewData("NormalCallCount") = callRepository.CountNormalCalls.Count() 
    ViewData("LowCallCount") = callRepository.CountLowCalls.Count() 

    ViewData("MyOpenCallsCount") = callRepository.CountMyOpenCalls(Session("LoggedInUser")).Count() 
    ViewData("UserName") = Session("LoggedInUser") 

    Dim viewOpenCalls = callRepository.FindAllOpenCalls() 
    Dim viewMyOpenCalls = callRepository.FindAllMyCalls(Session("LoggedInUser")) 

    Return View(viewOpenCalls) 
End Function 

這顯然只返回開電話,但我想退都viewOpenCalls和viewMyOpenCalls。

我該怎麼辦呢?

會顯示我的LINQ幫助?

感謝您提前提供任何幫助。

回答

2

將數據傳遞給視圖的最佳方式是爲視圖實際包含特定的ViewData,僅包含所需的數據。

而不必魔術字符串(ViewData("MyOpenCallCount"))定義包含需要該視圖中的所有數據一個特定的類(抱歉,如果我的VB.Net是有點生疏):

public class CallInfo 
    public OpendCallCount as int 
    public UrgentCallCount as int 
    'etc. 
end class 

public class CallViewData 
    public AllCalls as CallInfo 
    public MyCalls as CallInfo 
    public UserName as String 
end class 

,並使用強類型的視圖從ViewPage(of CallViewData)派生,這種方式你有智能感知,你不需要努力與硬編碼的字符串來獲取您的信息。

您使用來自所有調用和當前用戶調用的信息填充CallViewData,並返回此實例。

Dim data as new CallViewData 
    data.AllCalls = new CallInfo {OpenCallCount = ... } 
    'etc 
    return View(data) 
0

你不必爲你的ViewData分配數據項目。如果由於某種原因,您無法傳遞CallRepository對象,那麼您可以創建另一個數據對象,它將保存您的開放和所有調用存儲庫數據並傳遞該對象。

這是一個設計,從長遠來看實際上更加靈活。

相關問題