ASP.NET MVC - перейти к другому представлению без изменения URL - PullRequest
2 голосов
/ 07 октября 2009

возможно ли перейти в другой вид без изменения URL? Например, в моем индексном представлении у меня есть ссылка для перехода в подробный вид, но я хотел бы оставить URL-адрес прежним.

Большое спасибо, Кенни.

Ответы [ 5 ]

1 голос
/ 07 октября 2009

Как уже упоминалось, вы можете сделать ссылку Подробности Ajax.ActionLink и использовать ее для изменения содержимого div.

Если это не удастся, единственный другой способ, которым я могу думать, это заставить ваши данные связать кнопку и POST с вашим действием индекса. Вы можете применить CSS к кнопке, чтобы она выглядела как обычная HTML-ссылка.

public class HomeController : Controller {

   public ActionResult Index() {
      return View("Index");
   }

   [AcceptVerbs(HttpVerbs.Post)]
   public ActionResult Index(int hiddenInputFieldId) {
      return View("Details");
   } 
}

EDIT:

Исходя из комментария JonoW, вам придется передавать «постыдный» параметр вместе с вашим постом, хотя на самом деле это не проблема, вы можете просто использовать скрытое поле ввода для него.

0 голосов
/ 07 октября 2009

Вы можете сделать это путем рендеринга партиалов - я делаю это для загрузки различных экранов поиска. Пример кода выглядит следующим образом (это немного отличается от моего реального кода, но вы поймете идею):

<% Html.RenderPartial(Model.NameOfPartialViewHere, Model.SomeVM); %>

Лично я не понимаю, почему вы не просто изменили URL?

0 голосов
/ 07 октября 2009

Вы можете использовать старый добрый Server.Transfer для этого. Тем не менее, я бы предложил сделать это, как было подробно описано в этом посте . Это дает вам простой способ вернуть ActionMethod из вашего текущего действия, не добавляя код везде с Server.Transfer().

0 голосов
/ 07 октября 2009

Я не знаю, почему вы хотите это сделать, но у вас может быть ссылка Ajax.Action, которая отображает подробное представление ..

Почти нет причин скрывать URL, не уверен, к чему бы вы хотели обратиться ... возможно, вы объясните, что кто-то может предложить лучший подход.

0 голосов
/ 07 октября 2009

Вы можете вернуть одно и то же представление из нескольких действий контроллера, но для каждого действия контроллера требуется уникальный URL:

public class HomeController : Controller {
    public ActionResult Index() {
        return View("home");
    }

    public ActionResult About() {
        return View("home");
    }
}

Если вы хотите, чтобы ссылка загружала контент с другой страницы без изменения URL-адреса, вам придется использовать Ajax для вызова содержимого и обновления частей страницы, которые необходимо изменить, с помощью новой содержание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...