将数据从Controller拉到共享视图/布局

时间:2014-04-07 08:51:28

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

我正在使用ASP.NET MVC4创建一个使用PartialViews和jQuery加载内容的网站。我的主页看起来像这样:

<ul>
    <li id="recent">Recent</li>
    <li id="home">Home</li>
    <li id="books">Books</li>
</ul>

<div id="content"></div>

jQuery看起来像:

$("#recent").on("click", function () {
    $("#content").load("/Recent/Load");
});

$("#home").on("click", function () {
    $("#content").load("/Home/Load");
});

$("#Books").on("click", function () {
    $("#books").load("/Books/Load");
});

Here's a jsFiddle, not working because no MVC obviously.

<li>充当链接,将PartialViews从各自的控制器加载到<div id="content">

我希望在过去24小时内添加新图书时,“最近”<li>会显示为红色。控制器中存在确定是否已添加新书籍的逻辑。

我的一个解决方案是将“Recent”<li>作为单独的PartialView并执行以下操作:

RecentBooks.cshtml:

<li id="recent" style="background-color: red;">Recent</li>

NoRecentBooks.cshtml:

<li id="recent">Recent</li>

然后,在每个链接上单击,使用jQuery调用Controller,返回这两个PartialViews之一。

这似乎是在一行代码上更新一个属性的一种非常麻烦的方法。它会起作用,是的,但还有另一种我不知道的方法吗?其中一个不涉及PartialViews?

2 个答案:

答案 0 :(得分:0)

是的,它是改变局部视图的好方法。另一种方法是使用AJAX加载局部视图,

function functionName(controller, method, data, onSuccess, onError) {
    return $.post(baseUrl + '/' + controller + '/' + method, data, onSuccess).error(function (err) {
         if (onError) onError(err);
    });
}

答案 1 :(得分:0)

如果有人发现这一点,答案是除了使用PartialViews之外没有办法做到这一点。

相关问题