0

MVC3 のテスト プロジェクトを作成しましたが、そのプロジェクトには剃刀のレイアウトが 1 つしかありません。レイアウトでは、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>
4

2 に答える 2

0

ユーザー、

あなたが持っている場所:

<div class="content">

それを次のように変更する必要があります。

<div id="content">

次に、部分ビューをターゲットにしてその div を更新する必要があります。これは、コントローラ アクションが View() ではなく PartialView() を返す必要があることを意味します。また、前述のことを心配することなく、クリック機能を次のように変更してみてください。

$(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呼び出しで標準に従っている場合、これはすべて、言及された変更で自動的に解決されると確信しています。

于 2012-05-23T08:44:23.703 に答える
0

必要に応じて、各ページで使用されるレイアウトを指定できます。レイアウトが必要ない場合は、null に設定してください。これをページの上部に置きます:

@{
  layout = null
}
于 2012-05-23T08:09:36.527 に答える