ASP.NET MVC Поиск вызывающего метода, когда! ModelState.IsValid - PullRequest
4 голосов
/ 07 октября 2009

У меня есть метод действия на моем "CartController" AddtoCart, который возвращает ActionResult. Проблема в том, что я отправляю с другого контроллера на AddtoCart Id продукта, который я хочу добавить, а затем продолжаю. У меня нет проблем с валидацией; однако, когда я хочу перенаправить в представление, которое вызвало действие, когда! ModelState.IsValid, я не знаю, кто вызвал меня (или где его найти).

Возможно, что несколько различных контроллеров могут отправлять сообщения методу. Есть ли что-то во ViewData, которое я могу использовать, чтобы узнать, кто вызвал мой метод действия?

Ответы [ 3 ]

4 голосов
/ 07 октября 2009

Звучит для меня, как вы после:

Request.UrlReferrer

Дай мне знать, если нет.

HTHS
Charles

0 голосов
/ 07 октября 2009

Я думаю, что вы ищете что-то вроде этого:

[...] если вы не возражаете против привязки вашего кода к конкретному движку представления, который вы используете, вы можете посмотреть на свойство ViewContext.View и привести его к WebFormView

var viewPath = ((WebFormView)ViewContext.View).ViewPath;

из связанного вопроса о получении имени представления из метода контроллера.

0 голосов
/ 07 октября 2009

Я не думаю, что контроллеры делают пост. Контроллеры принимают запросы (сообщения) и выполняют некоторую работу, извлекают данные и затем выбирают, какое представление будет отображаться в браузере.

Итак, ваши методы действий обычно вызываются из веб-браузера (ссылка на страницу, javascript). Вот почему я предлагаю вам передать дополнительный параметр в методы Action, а затем, основываясь на этом значении, выбрать соответствующий вид для рендеринга.

public ActionResult AddToCart(int productID, string caller)
    {
        //add to cart logic

        switch (caller)
        {
            case "this":
                {
                    //get data for this view
                    return View("this");
                }
            case "that":
                {
                    //get data for that view
                    return View("that");
                }
            default:
                {
                    //get data for default view
                    return View("default");
                }
        }
    }

Надеюсь, что я хорошо понял, какова природа вашей проблемы ...

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