ASP.NET MVC Перенаправление на действия без физического перенаправления - PullRequest
7 голосов
/ 23 июля 2011

Можно ли каким-либо образом выполнить другое действие в том же модуле в другом контроллере из действия, фильтра действий или любым другим способом без физического перенаправления.

Причина в том, что яиметь динамическую систему подкачки, где пользователь будет загружать URL-адрес, например

/1/some-page-title

Этот URL-адрес сопоставлен с контроллером «Домой» и действием «Элемент», это действие затем загрузит строкуиз базы данных, где идентификатор элемента равен «1».В зависимости от данных об элементе из базы данных страница будет отображаться в виде контактной формы, галереи изображений и так далее.Теперь я могу отобразить пути так, чтобы

/Page/1/some-title/ will render a normal html page,
/Contact/1/some-title/ will render a contact form
/Gallery/1/some-title/ will render a gallery

Но я бы предпочел, чтобы пути были простыми.

Ответы [ 2 ]

11 голосов
/ 23 июля 2011

Есть проблемы с этим ответом, я давно ничего не делал с ASP MVC, поэтому на самом деле я не знаю, в чем проблемы. К сожалению, я не могу удалить принятый ответ.
Итак, я вычеркиваю ответ таким, какой он был, если вы действительно можете ответить на этот вопрос или сделать его лучше, пожалуйста, сделайте это.

Да, очень просто на самом деле:)

Скажем, вы находитесь в действии контроллера C А. Вы хотите "перенаправить" действие Z контроллера B, просто вызвать другое действие контроллера из текущего, возвращая его результат.

public ActionResult A()
{
    return B.Z()
}

0 голосов
/ 24 июля 2011

Возможно, вы ищете Html.RenderAction или Html.Action.Однако они используются в представлении, а не в контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...