Как мне вложить виды? - PullRequest
2 голосов
/ 06 мая 2011

У меня в настоящее время есть DIV внутри представления, которое я .load () выполняю во время выполнения (через jQuery) с представлением создания для другого контроллера. это работает, но когда я смотрю на страницу, div пуст (конечно). Я делаю это, потому что я не понял, как встроить представление в представление.

мне нужно какое-то заявление о включении. Я нашел @RenderPage (), но это не вызовет вызов метода контроллера.

Ответы [ 4 ]

3 голосов
/ 06 мая 2011

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

См. Html.Action против Html.RenderAction

1 голос
/ 06 мая 2011

На мой взгляд, это одна из самых сложных вещей в MVC.Вы можете использовать

@Html.DisplayFor(model=>model.something, "SomeDisplayTemplate")

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

http://jarrettmeyer.com/post/2995732471/nested-collection-models-in-asp-net-mvc-3

0 голосов
/ 06 мая 2011

Если вы просто хотите встроить «представление в представление», вы можете сделать это с помощью концепции частичных функций, см. Html.Partial().

Например, в стандартной нотации ASP.NET: <%= Html.Partial(string partialViewName) %>

или с синтаксисом Razor: @Html.Partial(string partialViewName)

Например: <%= Html.Partial("_myView") %> (который будет _myView.ascx в вашей папке Views\<action> или Shared.

Удачи.

0 голосов
/ 06 мая 2011

Я на самом деле иду к своему контроллеру с помощью jQuery.Post и возвращаю PartialView.

Затем я беру возвращенный HTML и использую jQuery, чтобы поместить этот HTML в целевой div.

Код контроллера

public ActionResult jQuery_GetEditPositionView(string id)
{
    PositionsRepository repository = new PositionsRepository();
    contract model = repository.Single(x => x.id == new Guid(id));
    return PartialView("ContractPositionEdit", model);
}

jQuery / Javascript

    function editPosition(id) {
        $.post('/Member/jQuery_GetEditPositionView', { id: id }, function (newHTML) {
            $('#newPositionDialog').html(newHTML);
            $("#newPositionDialog").dialog("open");
            $(".frmNewContract").validate();
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...