从另一个局部视图更新部分视图 - ASP.NET MVC2

Jas*_*son 6 c# asp.net asp.net-mvc partial-views asp.net-mvc-2

我希望有两个部分视图,一个用于SEARCH,一个用于SEARCHRESULTS.

我想SEARCHRESULTSSEARCH部分视图表单上单击"搜索"按钮时更新. SEARCHRESULTS需要从SEARCH局部视图中提供表单数据.

我不完全确定如何解决这个问题.我SEARCHRESULTS可以从SEARCH局部视图的Controller操作更新局部视图吗?

ahs*_*ele 8

一般讨论
在MVC设计模式中,视图彼此不了解.它们可以通过组合多个部分视图的视图的概念绑定在一起,但即使这样,部分也彼此无知.这个概念适用于ASP.NET MVC.Mike Brind在他的后期ASP.NET MVC部分视图和强类型自定义ViewModel中描述部分和ViewData做得很好.

特定于您的问题
要回答您的问题,只要将适当的信息传递给控制器​​,部分视图就可以链接到呈现不同视图的控制器操作.你如何做到这一点将取决于你想要做什么.

鉴于您的问题,我将假设SEARCH局部视图是一个带有搜索字段和按钮的简单表单.虽然SEARCHRESULTS是返回数据的列表.在这种情况下,您将创建一个名为的控制器操作Search,该操作接收字符串值并仅返回SEARCHRESULTS部分或包含SEARCHRESULTS部分的视图.Scott Guthrie提供了一个很好的描述,在他的博客文章中将ViewData从控制器传递给视图时将数据传递给视图.

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

    return PartialView("SEARCHREULTS", viewdata);
}
Run Code Online (Sandbox Code Playgroud)