我不确定我是否正确接近这个。
我有一个asp.net mvc网络应用程序。 有4个主要'页面' 通过单击菜单选项,选择了一个页面,并将该页面选择存储在本地存储中。
现在,如果我进行页面刷新,我已经编写了一个简单的JS脚本来维护当前查看的页面。
但是,我注意到@RenderBody()在我的JS脚本之前被称为1st,因此在显示所选页面之前,Home页面会非常短暂地出现。
所以,在sudo代码中我想要这个:
<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>
我的方法是否正确?如何以我描述的方式进行此操作?
答案 0 :(得分:2)
让我们在这里做出重要的区分。当服务器呈现视图时,RenderBody
在服务器端运行。在服务器完成渲染并将页面发送回浏览器之后,js在客户端上运行。因此,RenderBody
始终在js之前运行,并且无法改变它。因此,您编写的伪代码几乎不可能实现。
也就是说,总有一些选项可以通过其他方式获得所需的功能。几个选项包括:
决定在服务器端呈现的内容。例如,将这个页面选择存储在会话中会是一个很大的开销吗?这也会给你一个额外的好处,即不发送不会显示给用户的html标记,这样可以节省一些流量和一些浏览器渲染时刻。
默认情况下隐藏标记中的所有内容,就像执行display: none
一样简单,在js中决定要显示的内容并使用一行js / jquery显示它。在您当前的代码中实现起来可能更容易一些。