在选项卡UI中的两个部分视图之间共享数据

时间:2011-07-22 13:52:47

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-3

我使用jquery UI创建了两个选项卡,并在选项卡中放置了两个部分视图,如下面的代码所示。

<div id="tabs">
<ul>
    <li><a href="#tab1">Tab 1</a></li>
    <li><a href="#tab2">Tab 2</a></li>
</ul>
<div id="tab1">
   @Html.Partial("Tab1")    </div>
<div id="tab2">
   @Html.Partial("Tab2")
</div>

</div>

如何将Tab2局部视图中的数据共享到Tab1局部视图。

谢谢, 那仁

2 个答案:

答案 0 :(得分:2)

你不能。在部分视图之间直接共享数据也不是一个好的架构。每个部分视图应该存在一个不同的目的,不应该干扰或与其他部分交换数据 - 事实上,Tab1甚至不应该知道Tab2存在。

但是,您可以将数据存储在包含两个部分视图的视图的Model属性中,并将其移交给呈现的每个局部视图:

@model SomeModel

<div id="tabs">
    <ul>
        <li><a href="#tab1">Tab 1</a></li>
        <li><a href="#tab2">Tab 2</a></li>
    </ul>
    <div id="tab1">
       @Html.Partial("Tab1", Model)
    </div>
    <div id="tab2">
       @Html.Partial("Tab2", Model)
    </div>    
</div>

答案 1 :(得分:1)

从文体上来说,如果用户一次只能看到1个,我更喜欢在同一页面中加载不加载2个部分...我个人更喜欢将它们分成不同的视图(如果用户的体验让它看起来那么事件就像他们点击标签以获得你想要的效果一样)

这可以防止部分B做一些可能会减慢部分A的页面加载时间的事情,从而减慢用户体验,无明显原因。

如果您将这些视图加载到2个不同的视图中,那么您可以使用标准操作链接来移动数据...如果您需要直接导航到选项卡(这不是第一个),这也很有帮助