0

Я разрабатываю одностраничное приложение, использующее angularJs с страницей макета, которая будет доступна для всех моих страниц, но теперь я хочу, чтобы некоторые страницы загружались без включенной в нее страницы макета, как Я могу это сделать. Любая идея по этому поводу. Помните, что мои страницы не являются @razor, предоставленными с помощью .cshtml, за исключением макета и индексной страницы, все остальные страницы моего приложения - это .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

Любые * .cshtml страницы отображаются на стороне сервера, а затем обслуживаются клиентом.

* .html страницы статически подаются клиенту.

Обычно любые статические ресурсы помещаются в папку «Содержимое». В моем личном проекте это место, где я ставил свои статические html-страницы.

Другими словами, вы на самом деле используете бритву. В этом случае, используя различные _layout.cshtml ответа в этом StackOverflow вопрос:

How do I specify different Layouts in the ASP.NET MVC 3 razor ViewStart file?

Кроме того, как правило, в общем, для SPA приложения, данные подаются асинхронно через REST API или REST/JSON API. В этом случае, как только вы планируете загружать клиентскую часть, вам не придется иметь дело с файлами * .cshtml, вам нужно будет иметь дело только с чистыми данными, а ваш javascript на стороне клиента позаботится о том, чтобы эти данные были HTML.

В моем личном проекте, у меня есть HomeController, который служит статический HTML-страницу:

public class HomeController : Controller 
{ 

    public ActionResult Index() 
    { 
     return Redirect(Url.Content("~/Content/index.html")); 
    } 

} 

Что происходит здесь является то, что, когда пользователь переходит к http://localhost/ он выполняет действие Index от HomeController который перенаправляет к static html-файл, содержащий мой макет.

Любые запросы после этого загружаются с использованием запросов Ajax, которые возвращают данные JSON. Другими словами, для любых следующих запросов мне не нужно иметь дело с файлами Razor «* .cshtml».

Вам не нужно «игнорировать» _layout.cshtml, поскольку вы предполагаете, что будете обслуживать только данные.

+0

Привет Юань, я думаю, вы не поняли мой вопрос здесь. Я знаю, что файлы .cshtml обслуживаются сервером, и поэтому я могу контролировать, какую страницу макета он должен использовать, но мое приложение является angularJS со SPA и все это html-страницами, как я могу исключить страницу макета по умолчанию для определенных страниц, на которых я Не хочу макета. –

Смежные вопросы