我的任务是更新我公司的网站,我发现他们已经注意到他们在每个页面上都有下拉菜单(大约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
不兼容吗?如果是这样,你会如何推荐我从外部文件中引入一个菜单
答案 0 :(得分:0)
我相信您在ASP
,ASP.NET MVC
和Razor
视图引擎之间产生了很大的混淆。
简单地说:@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>
在使用布局的每个页面上呈现菜单的那种事情。