我希望两个部分视图,一个用于SEARCH
,另一个用于SEARCHRESULTS
。
我想在SEARCHRESULTS
部分视图表单上点击“搜索”按钮时更新SEARCH
。 SEARCHRESULTS
需要从SEARCH
部分视图中提供表单数据。
我不完全确定如何解决这个问题。我可以从SEARCHRESULTS
部分视图的Controller操作更新SEARCH
部分视图吗?
答案 0 :(得分:8)
一般性讨论
在MVC设计模式中,视图彼此不了解。它们可以通过组合多个部分视图的视图的概念绑定在一起,但即使这样,部分也彼此无知。这个概念适用于ASP.NET MVC。 Mike Brind在他的帖子ASP.NET MVC Partial Views and Strongly Typed Custom ViewModels中描述部分和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);
}