Мне нужно создать всплывающие окна в mvc (не новая вкладка в браузере). Кто-нибудь знает, как это сделать?
Всплывающие окна MVC
Ответ 1
Одна из возможностей - использовать jquery ui dialog.
ИЗМЕНИТЬ
Идея заключалась бы в том, чтобы иметь ajax-действие, которое возвращает частичное представление. Результат этого действия (html) помещается внутри контейнера всплывающего окна, а на обработчике успеха вызова ajax вы открываете всплывающее окно. Вот пример кода:
@Ajax.ActionLink("Open popup", "SomeAction", new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "result", InsertionMode = InsertionMode.Replace, OnSuccess="openPopup" })<br />
<div id="result" style="display:none;"></div>
<script type="text/javascript">
$(document).ready(function() {
$("#result").dialog({
autoOpen: false,
title: 'Title',
width: 500,
height: 'auto',
modal: true
});
});
function openPopup() {
$("#result").dialog("open");
}
</script>
Затем вам нужно добавить действие в контроллер, который возвращает частичный вид
[HttpGet]
public PartialViewResult SomeAction()
{
return PartialView();
}
Поместите все, что вам нужно в частичном представлении, вы также можете указать параметры в действии и т.д.
Удачи!
Ответ 2
Наиболее очевидным способом является использование одной из js-фреймворков. Лично я предпочитаю управление диалоговым окном jQuery UI.
Для получения подробной информации об этом, пожалуйста, проверьте http://jqueryui.com/demos/dialog/.
Также вы можете проверить ASP.NET MVC modal dialog/popup best practice (вопрос аналогичен вашему)
Конечно, если вам нужно простое всплывающее окно, вы всегда можете использовать alert('Im popup');
Обновление по вашему последнему запросу
Чтобы открыть какой-либо URL в новом окне, вы можете использовать следующий javascript:
function OpenDialog() {
window.open("some url", "DialogName", "height=200,width=200,modal=yes,alwaysRaised=yes");
}
Но результат действительно зависит от браузера. Большинство из них открывают это модальное окно не на новой вкладке, а в новом экземпляре браузера.
Эта тема может помочь вам:
JavaScript открыт в новом окне, а не вкладке