2010-04-08 41 views
1

我試圖創建一個包含網格和搜索的頁面。問題是我想對網格有一個局部視圖,而對於搜索有一個。使用局部視圖

如果進行搜索,這應該使用新信息渲染網格局部視圖。

目前我需要從網格(當前存儲在viewdata中)等信息,例如我正在排序的列等,以便執行搜索,因爲我想保留這些設置。該信息僅在部分網格中可用。

這樣做的最好方法是讓它在代碼中整潔美觀,但不是一團糟?

我在哪裏可以存儲我需要的信息在其他部分視圖中?

部分視圖1;

<table> 
     <%= Html.CreateGrid(Model, "Grid", "Grid", (int)ViewData["SortColumn"], (bool)ViewData["SortedASC"])%> 
</table> 

部分視圖2;

<div class="searchControl"> 
    <input type="text" class="SearchBox" href="<%= Url.Action("Grid", "Grid", new {page = 1, columnToSortBy=/* would like to access viewdata from partial view 1 here. */, sortASC = /* would like to access viewdata from partial view 1 here. */ }) %>" /> 
    <input type="submit" value="Search" class="SearchButton" /> 
</div> 

我知道我可能會採取完全錯誤的做法,所以請隨時指出我在正確的一個!

謝謝!

回答

1

ViewData是存儲在Views和Partials中訪問的數據的好地方。

如果您使用強類型視圖,效果會更好。然後,您可以訪問數據以通過鍵入的模型對篩選進行排序。 我會讓模型類實現一個接口IGridFeatures,它具有SortedASC,SortColumn,Page的屬性。

它通常是一個好主意,這些可選屬性不在路由中,而是在查詢字符串中。

+0

好的,所以如果我在視圖中創建屬性,然後在加載部分視圖時我設置了值,那應該沒關係? – MrW 2010-04-08 13:27:41

+0

您將模型傳遞給視圖。該視圖可以訪問模型的屬性。也許這個博客幫助http://stephenwalther.com/blog/archive/2009/04/13/asp.net-mvc-tip-50-ndash-create-view-models.aspx。 – 2010-04-08 21:18:57

0

我想你會更好地控制你的鏈接通過javascript,因爲你真正想要的是控制用戶界面。

+0

但是我無法做到這一點,因爲它將請求發送到服務器,然後再從頭開始渲染局部視圖。而且我現在還沒有發送請求的信息,因爲這些信息位於部分視圖1的視圖數據中。 – MrW 2010-04-08 11:56:23