2012-07-10 278 views
1

我在我的布局页面(Menu + Iframe) 我想在菜单中单击后加载iframe中的cshtml文件(查看页面)。 的目标不是加载整个布局在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> 

,但它加载整个页面布局

我不得不从另一个ASP.NET项目这个想法在点击菜单后使用javascript在iframe中加载.aspx页面

<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; 
       }); 
      }); 

任何想法?

+1

是您的CSHTML文件参考布局页面?如果可能的话,尝试使用局部视图而不是页面。 – 2012-07-10 14:57:29

+0

是的,cshtml页面是指布局页面。我会尝试你的想法。 – 2012-07-10 15:07:41

回答

1

您必须将iframe的“src”属性指向返回视图的控制器操作。

例如,

行动,返回局部视图没有布局

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

的Javascript

$('#getuser').click(function() 
{      
    document.getElementById('myIframe').src 
      = "/IframeController/IframeAction";      
    return false;     
}); 
0

您需要为您在iframe中加载的页面使用不同的布局。
然后,此页面中,你可以做

@{ 
    Layout = "YourLayout.cshtml"; 
} 

默认情况下,所有的CSHTML的意见是使用在

编辑
您可以使用下面的概念所提供的布局:

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

你给你的iframe一个名字,然后使用该名称作为动作链接的目标。这是最简单的解决方案。如果你愿意,你也可以使用其他答案中提供的jquery点击处理程序。

+0

感谢您的回复 但我怎样才能在菜单中单击后加载iframe中的cshtml文件。编辑了 – 2012-07-10 15:17:30

+0

。当然,你在控制器中的动作(“GetUsers”)应该返回使用其他布局的预期视图。 – YavgenyP 2012-07-10 15:41:29

+0

非常感谢:) – 2012-07-10 16:32:34

1

通过操作方法加载视图。这种观点认为,设置布局值设置为null,这样它不会使用viewstart.cshtml定义的layour

@{ 
    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操作方法在用户控制器

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

并确保在GetUsers.cshtml视图中,布局设置为空

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

感谢您的回复 但我怎样才能在菜单中点击后加载iframe中的cshtml文件。 像我上面用web窗体显示的例子asp.net – 2012-07-10 15:23:32

+0

@OthmaneByMe:查看我更新的答案 – Shyju 2012-07-10 15:43:09

相关问题