Откройте представление как всплывающее окно - PullRequest
9 голосов
/ 09 ноября 2011

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 }) |

Как открыть его как всплывающее окно модели

Ответы [ 2 ]

14 голосов
/ 09 ноября 2011

Добавьте класс по ссылке:

@Html.ActionLink("Download", "Download", new { id = model.Id }, 
                                         new{ @class = "dialog"} )

И добавьте где-нибудь этот скрипт:

<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

8 голосов
/ 09 ноября 2011

Вы можете добавить атрибут HTML target="_blank" к привязке, если вы хотите, чтобы 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;
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...