如何不每次都进行_Layout渲染?

时间:2012-05-23 08:03:53

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

我创建了一个MVC3的测试项目,该项目只有一个剃刀布局。 在布局中我使用jquery来创建动态菜单,我只想获得效果是当我点击这些菜单时,它应该返回主体段中的不同局部视图,并且布局菜单应该记住菜单状态我点击了布局页。

但结果是,当我每次点击菜单时,布局会再次渲染,菜单状态会恢复,如何解决问题?

这是我的代码!!!有人可以帮助我吗?谢谢!!!

            <!DOCTYPE html>
            <html>
            <head>

                <title>@ViewBag.Title</title>
                <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
                <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
                <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
                <script type="text/javascript">
                    $(function () {
                              $(".sidebar1 dl dd").hide();
                              $(".sidebar1 dl dt").click(function () {
                              $(".sidebar1 dl dd").not($(this).next()).hide();

                              $(this).next().slideToggle(500);

                        });
                    });

            </script>

            </head>
            <body>
            <div class="container">
              <div class="header"><a href="#"><img src="/Content/images/logo.png" alt="logo" name="Insert_logo" width="180" height="90" id="Insert_logo" style="background-color: #C6D580; display:block;" /></a>

                <!-- end .header --></div>
              <div class="sidebar1">

                <dl class="nav">
                  <dt><a href="#">aaaaa</a></dt>
                    <dd>
                        <ul>
                      <li><a href="#">AAAA</a></li>
                          <li><a href="#">BBBB</a></li>
                          <li><a href="#">CCCC</a></li>

                        </ul>
                    </dd>
                  <dt><a href="#">aaaaa</a></dt>
                    <dd>
                        <ul>
                      <li><a href="#">AAAA</a></li>
                          <li><a href="#">BBBB</a></li>
                          <li><a href="#">CCCC</a></li>

                        </ul>
                    </dd>
               </dl>
            </div>
            <div class="content">

            @RenderBody()
            </div>

            </body>
            </html>

2 个答案:

答案 0 :(得分:0)

如果需要,您可以指定每个页面上使用的布局。 如果您不想要布局,只需将其设置为null。 把它放在页面顶部:

@{
  layout = null
}

答案 1 :(得分:0)

用户,

你有:

<div class="content">

您需要将其更改为:

<div id="content">

然后,您需要定位部分视图以更新该div。这意味着您的控制器操作应返回PartialView(),而不是View()。此外,无需担心上述任何内容,您只需尝试将点击功能更改为:

$(function () {
    $(".sidebar1 dl dd").hide();
    $(".sidebar1 dl dt").click(function (e) {
        $(".sidebar1 dl dd").not($(this).next()).hide();

        $(this).next().slideToggle(500);
        e.preventDefault();
        return false;
    });
});

可能会有更多要求,因为你没有显示ajax代码,但我愿意打赌,如果你在你的ajax调用中遵循标准,那么这将通过所提到的更改自行解决。