1

レイアウトページ(メニュー+ Iframe)にあり、メニューをクリックした後、iframeにcshtmlファイル(ページを表示)をロードしたいと思います。目標は、レイアウトページ全体をロードすることではありません

私はこの方法を試しました:

<ul id="qm0" class="qmmc">
    <li><a class="qmparent" >FILES</a>
        <ul class="rgauche">
                <li>@Html.ActionLink("USERS","getUsers")</li>   
                <li><a id="disconnect">Deconnexion</a></li>                              
             </ul>
    </li>
</ul>

ただし、レイアウトページ全体が読み込まれます

メニューをクリックした後、JavaScriptを使用してiframeに.aspxページをロードする別のASP.NETプロジェクトからこのアイデアを思いつきました

 <ul id="qm0" class="qmmc">
        <li><a class="qmparent" >FILES</a>
            <ul class="rgauche">
                    <li><a id="getuser">USERS</a></li>   
                    <li><a id="disconnect">Deconnexion</a></li>                              
                 </ul>
        </li>
    </ul>


            $(function () {

                $('#getuser').click(function () {
                    document.getElementById('myIframe').src = "users.aspx";
                    return false;
                });
            });

何か案は ?

4

3 に答える 3

1

アクションメソッドを介してビューをロードします。このビューでは、レイアウト値をnullに設定して、viewstart.cshtmlで定義されたレイアウトを使用しないようにします。

@{
  Layout=null;
}
<p>some partial view content</p>

編集: あなたが何を達成したいのかよくわかりません。ただし、レイアウト内のIframeコンテンツを更新する場合は、次のようにすることができます

あなたLayout.cshtmlがこんな感じだとしたら

<head>
    //Load jQuery library
</head>

<body>
 @Html.ActionLink("List", "GetUsers", "Users", null, new { @class = "iframable" })
 <iframe id="ifrm" style="width:500px; height:200px; border:1px solid black;">
 </iframe>

@RenderBody()

<script type="text/javascript">
    $(function () {
        $(".iframable").click(function (e) {
            e.preventDefault();
            var item = $(this);
            $("#ifrm").attr('src', item.attr("href"));
        });
    });
</script>

これGetUsersで、Usersコントローラーにアクションメソッドがあります

public ActionResult GetUsers()
{
      return View();
}

GetUsers.cshtmlビューで、レイアウトがnullに設定されていることを確認してください

@{
  Layout=null;
}
<p>some partial view content</p>
于 2012-07-10T15:04:12.020 に答える
1

iframeの「src」属性を、ビューを返すコントローラーアクションにポイントする必要があります。

例:

レイアウトなしで部分ビューを返すアクション

public PartialViewResult IframeAction()
{
   return PartialView();
}

Javascript

$('#getuser').click(function () 
{                     
    document.getElementById('myIframe').src 
          = "/IframeController/IframeAction";                     
    return false;                 
}); 
于 2012-07-10T15:31:39.927 に答える
0

iframe内に読み込んでいるページに別のレイアウトが必要です。
次に、このページ内で、次のことができます

@{
   Layout = "YourLayout.cshtml";
}

デフォルトでは、すべてのcshtmlビューは_ViewStart.cshtmlで提供されるレイアウトを使用しています

編集
次の概念を使用できます。

<iframe name="my_frame"></iframe>
@Html.ActionLink("Users", "GetUsers", null, new { target = "my_frame" })

iframeに名前を付けてから、その名前をアクションリンクのターゲットとして使用します。それが最も簡単な解決策です。必要に応じて、他の回答の1つで提供されているように、jqueryクリックハンドラーを使用することもできます。

于 2012-07-10T15:00:20.067 に答える