Как перенаправить из элемента управления с помощью MVC2 - PullRequest
0 голосов
/ 07 июля 2011

Мне было поручено создать пользовательский элемент управления на нашей главной странице, который позволяет пользователям переключаться между учетными записями. Таким образом, мы можем позволить пользователям изменять свою учетную запись, не возвращаясь на страницу учетных записей. Это казалось законной и совершенно простой задачей.

Я собрал элемент управления и добавил его на главную страницу с помощью Html.RenderAction. Последний шаг для меня - перенаправить пользователя на домашнюю страницу этой учетной записи. Для этого я строю маршрут к домашней странице и пытаюсь вернуть RedirectToRoute (route).

Когда я пытаюсь это сделать, я получаю эту ошибку:

Child actions are not allowed to perform redirect actions

У кого-нибудь есть идеи, как решить эту проблему, или я закодировал себя в поле

Заранее спасибо

1 Ответ

2 голосов
/ 07 июля 2011

Вы можете обмануть с помощью уродливого хака:

[ChildActionOnly]
public ActionResult SomeUserControlAction()
{
    // ... some processing

    var url = Url.RouteUrl("routeName", new 
    { 
        action = "foo",
        controller = "bar"
    });
    Response.Redirect(url);
    return null;
}

Это настолько уродливо, что мне стыдно даже упоминать об этом, но это работает.

Другая возможность - передать URLкак часть модели представления к представлению и выполните перенаправление в javascript, установив window.location.href для нового URL.

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