Контроллер и предыдущий вид - PullRequest
1 голос
/ 07 августа 2009

Прямо сейчас у меня есть действие, связанное только с POST со страницы Index в моем приложении MVC. Но я хочу общее действие обработчика, которое обрабатывает все посты на странице, и в рамках действия POST Handler, я хочу знать представление, из которого я только что пришел. То, что я хочу, это ниже: Есть идеи?

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult GenericPostHandler(NewAccountInfo info)
    {
        try
        {
            string currentview = //how to get View for which to handle the POST?
            Persist();

            return RedirectToAction(StepManager.GetNextStep(currentView));
        }
        catch
        {
            return View();
        }
    }

Ответы [ 2 ]

1 голос
/ 07 августа 2009

Полагаю, вы могли бы написать маршруты, которые будут пересылать все запросы одному действию в одном конкретном контроллере, но тогда они будут активны для всех команд HTTP, либо GET, либо POST, либо иным образом.

То, что вы пытаетесь достичь, очень противоречит духу MVC. Не могли бы вы рассказать нам, в чем суть этого требования?

Я постараюсь угадать. Вы хотите выполнить какую-то предварительную обработку каждого поста, верно? Может быть, проверка авторизации, журнал активности и т. Д. Если это так, вы можете реализовать свой собственный ActionFilter и украсить этим атрибутом все свои контроллеры. Тогда все вызовы будут перехвачены этим фильтром, и вы можете делать там все, что вам нужно, - затем передать запрос его обычному обработчику (действие) или направить его в другое место.

0 голосов
/ 07 августа 2009
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult GenericPostHandler(NewAccountInfo info, string fromViewName)
{
    ...
}

В просмотрах:

<% var actionUrl = Url.RouteUrl(new {
    controller = "yourcontroller",
    action = "genericposthandler",
    fromviewname = "whereyoucamefrom"
}); %>

<form action="<%= actionUrl %>" method="post">
    ...
</form>

производит URL как /yourcontroller/genericposthandler?fromviewname=whereyoucamefrom

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