何时加载部分视图的MVC最佳实践

时间:2011-02-27 18:24:09

标签: jquery asp.net-mvc asp.net-ajax

我有一个Web应用程序,每个页面上都有相同的横幅,带有链接等。我想知道的是,当点击其中一个链接时,我应该如下使用javascript / jquery来呈现部分视图内容到div ...或只是做一个常规的Html.ActionLink目标页面包含横幅?

页面结构

<div id ="banner">
// banner content
</div>
<div id="mainContentDiv">
// changing content
</div>

因此,当我在横幅中选择横幅不变的链接时,我应该调用一些jquery函数来更改内容......

$('#mainContentDiv').load('/ControllerName/ActionName?args...');

...会调用一些控制器操作并返回主内容div中的局部视图。这是好习惯吗?这意味着我只加载所需的内容而不必重新加载我的横幅。我已经玩过尝试使用json返回部分视图,但它似乎过于复杂,我正在做什么。所以我的问题是......这是执行此操作的正确方法,还是有任何不利之处?

就在我拥有Html.ActionLink的所有内容时,所以它可能更像一个问题,是否值得重构保持静态内容不需要刷新...这将意味着用户看不到每个链接都采用它们(因为它将全部是javascript onclick事件,我将不得不更改我的所有操作方法以返回部分视图(以及从我当前的视图中删除横幅并使其成为部分视图... )

2 个答案:

答案 0 :(得分:1)

如果可以,为什么不do both?我将尝试概述一种可能的方法:

首先,您有链接<a data-target="#main" href="/users/1/show">Show me user 1!</a>。所以在这一点上,我们有一个适用于所有人的普通链接 - 人类和搜索引擎。

现在把它搞砸了。

$("a").click(function() {
  var target = $.data(this, "target");
  $(target).load("_" + this.href);
  return false;
});

按惯例,我用下划线命名我的部分。这是一个非常基本的演示,你可以做其他花哨的东西,但这是一般的想法。

答案 1 :(得分:-2)

何时加载部分视图?

在进行像ajax.actionlink

这样的ajax调用时