Открыть представление как всплывающее окно
Controller.cs:
public ActionResult ViewRequest(int id)
{
Job job = Jobs.GetJob(id);
return View(job);
}
Это вид:
@model model.Job
<fieldset>
<legend>Job</legend>
<div class="display-label">Name</div>
<div class="display-field">
@Html.DisplayFor(model => model.Name)
</div>
</fieldset>
@Html.ActionLink("Download", "Download", new { id = model.Id }) |
Как открыть его при всплывании модели
Ответы
Ответ 1
Добавьте класс в ссылку:
@Html.ActionLink("Download", "Download", new { id = model.Id },
new{ @class = "dialog"} )
И добавьте этот script где-нибудь:
<script type="text/javascript">
$(function (){
$('a.dialog').click(function() {
var url = $(this).attr('href');
var dialog = $('<div style="display:none"></div>').appendTo('body');
dialog.load(url, {},
function (responseText, textStatus, XMLHttpRequest) {
dialog.dialog({
close: function(event, ui) {
dialog.remove();
}
});
});
return false;
});
});
</script>
Необходимый CSS/JS
Ответ 2
Вы можете добавить атрибут target="_blank"
HTML к якорю, если хотите, чтобы URL-адрес был открыт в новом окне браузера:
@Html.ActionLink(
"view request in a new window",
"ViewRequest",
new { id = model.Id },
new { target = "_blank" }
)
Или если вы хотите открыть его в новом модальном окне, вы можете использовать виджет jQuery UI Dialog, который вы могли бы ненавязчиво AJAXify эту ссылку (после применяя его уникальный идентификатор):
@Html.ActionLink(
"view request in a new window",
"ViewRequest",
new { id = model.Id },
new { id = "linkId" }
)
а затем в отдельном файле javascript:
$(function() {
$('#linkId').click(function() {
$.get(this.href, function(result) {
$(result).dialog();
});
return false;
});
});
или если вы хотите открыть диалоговое окно сразу после нажатия ссылки и предоставить небольшую обратную связь при выполнении вызова AJAX:
$(function() {
$('#linkId').click(function() {
$('<div>Loading ...</div>').load(this.href).dialog();
return false;
});
});