MVC3 JQuery部分视图Div更新

时间:2011-04-21 16:48:31

标签: jquery asp.net-mvc-3 html partial-views

以下是我的情景:

我有一个从viewModel

创建的以下菜单
<ul>
    <li id="1" class="menu-item-click">Item 1</li>
    <li id="2" class="menu-item-click">Item 2</li>
    <li id="3" class="menu-item-click">Item 3</li>
</ul>

列表中的每个项目都具有“能力”,知道它应该加载哪个部分视图(它以这种方式存储在数据库中)

我有以下代码来捕获每个列表项上的click事件

$(".menu-item-click").click(function () {
//load the correct partial view

});

我的问题是我应该存储有关要加载的部分视图的信息吗?

我可以将它作为自定义属性存储在列表项(li)中。 (似乎不是最好的方式)

我希望有一种方法可以将列表项的id发送到一种“master”控制器,它可以返回正确的局部视图。

非常感谢任何帮助/方向。

3 个答案:

答案 0 :(得分:3)

我更喜欢将数据附加到元素,它被认为是与元素一起存储数据的语义方式,而不是与JS代码混合,而且它被认为是从HTML5开始的标准实践。

<ul>
    @foreach (MyView item in Model.MyViews) {
        <li id="@item.id" class="menu-item-click" data-view="@item.href">Item 1</li>
    }
</ul>


$(".menu-item-click").click(function () {
    var view = $(this).data('view');
});

答案 1 :(得分:0)

您可以考虑在每个li上使用data-* attributes。我知道你提到你并不认为这是最好的选择,但我认为最终会保持简洁。

答案 2 :(得分:0)

我不确定你想要存储什么类型的信息以及什么,但如果你使用的是jQuery及其基于DOM,那么存储信息的好方法是$ .data();

$.data('#someElement','theKey','some data goes here')

然后,致电:

$.data('#someElement','theKey')
//returns "some data goes here"

您还可以在其中存储JSON内容,例如:

$.data(document.body,'data',{name:'Jim smith', email:'xxx@xxx.com'});

如果您要存储的数据基于元素,我会这样做。如果它是任意数据,您可以将其存储在localStorage中。如果您正在寻找的更多内容让我知道,我也可以写一个例子。