можно ли перейти к другому представлению без изменения URL-адреса? Например, в представлении «Индекс» у меня есть ссылка для перехода в представление «Подробности», но я хотел бы сохранить URL-адрес прежним.
Большое спасибо, Кенни.
можно ли перейти к другому представлению без изменения URL-адреса? Например, в представлении «Индекс» у меня есть ссылка для перехода в представление «Подробности», но я хотел бы сохранить URL-адрес прежним.
Большое спасибо, Кенни.
Как уже упоминалось, вы можете сделать ссылку Details 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");
}
}
ИЗМЕНИТЬ:
Судя по комментарию JonoW, вам придется передать «фальшивый» параметр с вашим сообщением, хотя это не проблема, вы можете просто использовать для него скрытое поле ввода.
Вы можете вернуть одно и то же представление из нескольких действий контроллера, но для каждого действия контроллера требуется уникальный URL-адрес:
public class HomeController : Controller {
public ActionResult Index() {
return View("home");
}
public ActionResult About() {
return View("home");
}
}
Если вы хотите, чтобы ссылка загружала контент с другой страницы без изменения URL-адреса, вам придется использовать Ajax для вызова сервера для контента и обновления частей страницы, которые вам нужно изменить, с новым контентом.
Я не знаю, почему вы хотели бы это сделать, но у вас может быть Ajax.Actionlink, который отображает подробное представление.
Почти нет причин скрывать URL-адрес, не уверен, что вы хотели бы ... может быть, вы объясните, что кто-то может предложить лучший подход.
Для этого можно использовать старый добрый Server.Transfer
. Тем не менее, я бы предложил сделать это так, как это подробно описано ТАК пост. Это дает вам простой способ вернуть ActionMethod из вашего текущего действия, не приправляя ваш код Server.Transfer()
повсюду.
Вы можете сделать это, визуализируя частичные изображения. Я делаю это, чтобы загружать различные экраны поиска. Пример кода выглядит следующим образом (это немного отличается от моего фактического кода, но вы поняли идею):
<% Html.RenderPartial(Model.NameOfPartialViewHere, Model.SomeVM); %>
Лично я не понимаю, почему вы просто не меняете URL?