2016-02-17 87 views
0

我不知道我是否正确接近此。忽略@RenderBody()

我有一个asp.net mvc网络应用程序。 有4个主要'页面' 通过单击菜单选项选择一个页面,并将该页面选择存储在本地存储器中。

现在,如果我做一个页面刷新我写了一个简单的JS脚本,将维护当前查看的页面。

但是,我已经注意到@RenderBody()在我的JS脚本之前被调用,所以主页非常简短地出现在所选页面显示之前。

所以,在须藤代码我想这一点:

<div id="mainContent" style="height:423px; "> 
    if (pageselected!='HOME') 
    { 
     //call my JS script to load a partial view 
    } 
    else 
    { 
     //else load home page 
     @RenderBody() 
    } 
</div> 

有我有我的方法正确,我该怎么O本的方式我描述?

回答

2

让我们在这里做一个重要的区别。当服务器呈现视图时,服务器端运行RenderBody。在服务器完成渲染并将页面发送回浏览器后,js将在客户端上运行。所以它总是会在js之前运行RenderBody,并且无法改变它。因此你写的伪代码几乎不可能实现。

也就是说,总有一些选项可以以其他方式获得所需的功能。几个选项包括:

  1. 决定在服务器端渲染什么。例如,将这个页面选择存储在会话中会是一个很大的开销吗?这也会给你一个额外的好处,不会发送不会显示给用户的HTML标记,这可以节省一些流量和一些浏览器渲染时间。

  2. 默认隐藏标记中的所有内容,就像做display: none一样简单,在你的js决定显示什么,并用js/jquery的一行显示。在当前的代码中实现起来可能更容易一些。

+0

感谢您对我的怜悯:)我喜欢您的选择2.谢谢 –