我正在使用angularJs开发单页应用程序,其布局页面可用于我的所有页面,但现在我想要加载一些页面而不包含布局页面,我该怎么做呢。对此有任何想法。记住我的页面不是用@cshtml呈现@razor,除了布局和索引页面我的应用程序中的所有其他页面都是.html文件。
Index.cshtml:
<div data-ng-view></div> - This is where all my pages will get loaded in to using the ngRoute
_Layout.cshtml:
<body>
<aside><nav>....</nav></aside>
<section><header>...</header>RenderBody()</section> - This is where my index page gets called
<aside>....</aside>
</body>
现在,我希望我的页面仍然通过#index加载,因为我的应用程序是SPA,但_Layout.cshtml应该被忽略。
答案 0 :(得分:0)
任何* .cshtml页面都呈现在服务器端,然后提供给客户端。
* .html页面静态地提供给客户端。
通常会将任何静态资源放入&#34;内容&#34;夹。在我自己的个人项目中,这是我放置静态html页面的地方。
换句话说,你实际上正在使用Razor。在这种情况下,在此stackoverflow问题中回答使用不同的_layout.cshtml:
How do I specify different Layouts in the ASP.NET MVC 3 razor ViewStart file?
此外,通常,对于SPA应用程序,数据通过REST API或REST / JSON API异步提供。在这种情况下,一旦您的客户端加载了布局,您就不应该处理* .cshtml文件,您只需处理纯数据并在客户端处理您的javascript来处理将该数据呈现为html。
在我的个人项目中,我有一个提供静态html页面的HomeController:
public class HomeController : Controller
{
public ActionResult Index()
{
return Redirect(Url.Content("~/Content/index.html"));
}
}
这里发生的是当用户转到http://localhost/时,它会从HomeController执行Index操作,该操作会重定向到包含我的布局的静态html文件。
之后的任何请求都是使用返回JSON数据的Ajax请求加载的。换句话说,对于以下任何请求,我不必处理Razor&#34; * .cshtml&#34;文件。
你不应该&#34;忽略&#34; _layout.cshtml,因为您假设只提供数据。