ASP.NET的新手,我不知道为什么这个@RenderPage不起作用

时间:2015-06-30 09:26:22

标签: asp.net razor

我的任务是更新我公司的网站,我发现他们已经注意到他们在每个页面上都有下拉菜单(大约60个)的第一件事,所以第一件事我想做的是创建一次菜单,并从每个页面调用它,这样我就不需要创建相同的菜单60次。我知道在php中我可以输入一个#include,一切都会好的,但该公司禁止我使用php,我必须使用他们的aspx。在做了一点研究之后,我发现asp.net有@RenderPage语句,看起来它会起作用,我在Visual Studio Express上用一个简单的test.vbhtml程序试了一下,一切正常。然后我去了该公司的Default.aspx页面并尝试了它,而不是渲染我的菜单,它只显示@RenderPage("_Menu.vbhtml")行而不是菜单文件。想到我搞砸了,我评论了整个页面并在底部留下了一个简单的程序

<html>
 <head>
  <title>Main Page</title>
 </head>
 <body>
  @RenderPage("_test.vbhtml")
  <h1>Index Page Content</h1>
  <p>This is the content of the main page.</p>
 </body>
</html>

我仍然得到相同的结果,它不会渲染页面,只显示我的命令,好像我已将其包装在p标签中。我究竟做错了什么? .aspx与@RenderPage不兼容吗?如果是这样,你会如何推荐我从外部文件中引入一个菜单

2 个答案:

答案 0 :(得分:0)

我相信您在ASPASP.NET MVCRazor视图引擎之间产生了很大的混淆。

简单地说:@RenderPage无效.aspx。页面本身必须是vbhtml文件作为Razor视图。

您可以使用<% RenderPage(...) %>进行正确的标记。

答案 1 :(得分:0)

转到观看次数&gt;共享并查看是否有_Layout.vbhtml,这是您的母版页,如果菜单位于该页面中,那么使用该布局的每个页面都应显示该菜单。

许多MVC应用程序使用开箱即用的引导主题,而_Layout.vbhtml包含:

<div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li>@Html.ActionLink("Exceptions", "Index", "Exceptions")</li>       
                    <li>@Html.ActionLink("Output File","Index", "MasterFile")</li>                            
                    <li>@Html.ActionLink("Reports","Index","Reports")</li>      
                </ul>
                <p class="nav navbar-text navbar-right">Hello, @User.Identity.Name!</p>
            </div>

在使用布局的每个页面上呈现菜单的那种事情。