排除单页面应用程序中的布局页面

时间:2015-05-20 17:41:22

标签: angularjs model-view-controller single-page-application

我正在使用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应该被忽略。

1 个答案:

答案 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,因为您假设只提供数据。