使用部分视图

时间:2010-04-08 11:01:00

标签: asp.net-mvc model-view-controller partial-views

我正在尝试创建一个包含网格和搜索的页面。问题是我希望有一个网格的局部视图和一个用于搜索的视图。

如果进行搜索,则应使用新信息呈现网格局部视图。

目前,我需要从网格(当前存储在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>

我知道我可能会对此采取完全错误的方法,所以请随意指出正确的方法!

谢谢!

2 个答案:

答案 0 :(得分:1)

ViewData是存储在视图和部分中访问的数据的好地方。

如果使用强类型视图,效果会更好。然后,您可以通过类型化模型访问用于排序过滤的数据。 我希望模型类实现一个IGridFeatures接口,它具有SortedASC,SortColumn,Page的属性。

将这些可选属性放在路径中但在查询字符串中通常是个好主意。

答案 1 :(得分:0)

我认为你最好通过javascript控制你的链接,因为你真正想要的是控制用户界面。