ASP.NET MVC3 Комбинация представлений + противоречие частичных представлений - PullRequest
0 голосов
/ 01 октября 2011

У меня есть следующая структура:

Просмотров:

Главная * * 1005

Статья

Частичные просмотры:

Книга

Классы

Введение

Faq

В верхней части страницы, в моем заголовке, находится меню навигации, содержащее несколько Ajax.ActionLinks, которые вызывают различные методы в моем классе HomeController для извлечения определенного частичного представления, а затем помещают этот контент в мой центр DIV. Поэтому я могу щелкнуть ссылку Faq, и содержимое в центре DIV моей страницы теперь будет содержать частичное представление моего Faq. Теперь у меня есть представление «Статьи», которое будет выглядеть совершенно по-другому, и поэтому его необходимо отделить, поскольку оно является собственным, а не частичным, и проблема, с которой я сталкиваюсь, заключается в том, что я нажимаю на свой Html.ActionLink для «Статьи». ", Я перешел к своему представлению" Статьи ", и это то, что я хочу, но затем, если я нажму на одну из других ссылок, которые являются Ajax.ActionLinks, мне нужно (каким-то образом), чтобы представление вернулось к моему Домашнему виду, чтобы Затем можно получить запрошенный частичный вид и поместить его в мой центр DIV. Есть идеи, как я могу это сделать? Прямо сейчас AJAX.ActionLink, когда вызывается во время моего просмотра статей, вызывает мой HomeController, но затем пытается заменить контент в моем центральном DIV (которого нет в моем представлении статей), и, кроме того, это не так. загрузка HomeView.

Есть мысли о том, как лучше всего этого добиться? Кроме того, я не использую двигатель Razor.

Итак, навигационное меню, представляющее собой набор ссылок, находится в моем файле Site.Master. Вот одна из ссылок, которые у меня есть:

  <%= Ajax.ActionLink("Book", "LoadBook", new AjaxOptions() { HttpMethod = "Post", UpdateTargetId = "content", InsertionMode = InsertionMode.Replace })%>

При нажатии на эту ссылку вызывается метод LoadBook в моем HomeController. См. Код ниже:

public ActionResult LoadBook()
{
    return PartialView("Book");
}

В моем представлении Home.aspx у меня есть следующий код:

<div id="content">
   <% Html.RenderPartial("Intro"); %>
</div>

Этот код автоматически загружает частичное представление для моего "вступления" (введение) по умолчанию при каждой начальной загрузке начального представления. Таким образом, в основном, так как ссылка для «Статей» - это Html.ActionLink (в отличие от Ajax.ActionLink), при щелчке по ней я попадаю в представление «Статьи». Когда я нажимаю, например, на Ajax.ActionLink «Книга» в моем заголовке Site.Master в представлении «Статьи», код пытается обновить DIV «содержимого» с частичным представлением «Книга». Такое поведение требуется только в представлении Home, по понятным причинам. Итак, как я могу по-разному реагировать на ссылки Ajax.ActionLink при просмотре представления, отличного от моего начального вида?

Спасибо!

Chris

1 Ответ

2 голосов
/ 01 октября 2011

Такая архитектура создаст вам массу проблем.Для stanrtes вы не можете ссылаться на какие-либо страницы.Весь ваш контент происходит на вашей главной странице.

Это нормально работает для таких приложений, как GMail, но большинство людей не могут понять, почему они не могут сохранить ярлык на странице или отправить ссылку другу.

HTMLразработан, чтобы иметь уникальный URL для каждой страницы.Вы боретесь вверх по течению, пытаясь сделать что-то другое.Предположим, вы хотите использовать фрагменты, чтобы перейти к другим разделам вашей страницы.ты не можешь этого сделать.

...