2010-09-20 175 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); 
}