从另一帧刷新一帧

时间:2012-08-04 09:23:27

标签: asp.net-mvc-3 visual-studio-2010

我正在使用asp.net mvc3.visual studio2010。

我的应用程序中有三个框架。当我单击不同窗格中的按钮时,我想刷新另一个窗格。

为此,我在我的应用程序中使用了frameset。我喜欢

<frameset cols="25%,*,25%"> 
    <frame name ="f1" src="../SearchCriteria/Index"/> 
    <frame name="f2" src="../SearchResults/Index" /> 
    <frame name="f3" src="../SearchProfile/Index" />
</frameset>

当我调试应用程序时,我的输出中显示空白页面。你能说出我错在哪里吗?

我的观点路径是:
查看 - &gt; SearchCriteria-&gt; Index.cshtml查看 - &gt; SearchResults - &gt; Index.cshtml查看 - &gt; SearchProfile - &gt; Index.cshtml

2 个答案:

答案 0 :(得分:1)

由于它是一个ASP.NET MVC应用程序,您的项目中应该已经有jQuery库。为什么不使用一些jQuery酷功能并为用户提供精彩的用户体验?

使用DIV而不是FrameSet。将jQuery库包含在此页面中(或布局页面,以便它可以在使用该布局模板的所有页面中使用)

<div id="divNavigation">
  <ul>
     <li>@Url.ActionLink("About","About","Home",null, new { @class="lnk"})</li>
     <li>@Url.ActionLink("Contact","Contact","Home",null, new { @class="lnk"})</li>
     <li>@Url.ActionLink("Jobs","Jobs","Home",null, new { @class="lnk"})</li>
  </ul>
</div>
<div id="content">

</div>
<script type="text/javascript">
  $(function(){
     $(".lnk").click(function(e){
       e.preventDefault();
       $("#content").load($(this).attr("href"));
     });
  });
</script>

上面代码的作用是,每当用户点击带有css类lnk的锚标签时,它将使用jQuery load函数以异步方式加载链接的HREF页面的内容。所以没有页面刷新/重新加载,用户会看到。

答案 1 :(得分:0)

将帧更改为带ID的div,第1帧上有一个带ID的按钮,将click事件附加到将获取数据的按钮并填充div 2的html,这就是它的完成方式。你会发现,开发人员现在可以轻松实现路由,代码更少,做得更多。如果您的帧解决方案是可能的(我确定它是),我肯定大多数开发人员会喘息,然后去OMG WTF为什么dident他只做XXXX并使这些东西易于维护: - )

我不想推送任何特定的框架,但如果您对JSON或XML不满意,可以使用直接的javascript完成所有这些并返回html内容。