2010-09-20 95 views
6

我想有兩個部分視圖,一個用於SEARCH和一個用於SEARCHRESULTS從另一個部分視圖更新部分視圖 - ASP.NET MVC2

我想在SEARCH局部視圖表單上單擊「搜索」按鈕時更新SEARCHRESULTSSEARCHRESULTS需要從SEARCH局部視圖獲得輸入給它的表單數據。

我不完全確定如何去做這件事。我可以從我的SEARCH局部視圖的控制器操作更新SEARCHRESULTS局部視圖嗎?

回答

8

一般性討論
在MVC設計模式中,視圖彼此不知道。它們可能通過組裝多個局部視圖的視圖的概念而被束縛在一起,但即使這樣,局部視圖也是彼此無知的。這個概念適用於ASP.NET MVC。 Mike Brind在他的文章ASP.NET MVC Partial Views and Strongly Typed Custom ViewModels中做了很好的描述partials和ViewData。

具體到你的問題
要回答你的問題的局部視圖可以有一個鏈接,呈現不同的視圖控制器的動作,只要適當的信息傳遞給控制器​​。你如何去做這將取決於你想要做什麼。

鑑於你的問題,我將假設SEARCH局部視圖是一個帶有搜索字段和按鈕的簡單形式。而SEARCHRESULTS是返回數據的列表。在這種情況下,您需要創建一個名爲Search的控制器操作,該操作會接收字符串值並返回部分或SEARCHRESULTS部分的部分視圖或包含SEARCHRESULTS部分的視圖。 Scott Guthrie在他的博客文章Passing ViewData from Controllers to Views中提供了一個將數據傳遞到視圖的相當好的描述。

// returning partial 
public ActionResult Search(string q) 
{ 
    //do search ....... 
    //................. 

    return PartialView("SEARCHREULTS", viewdata); 
}