开发者

How To Redirect From a Control Using MVC2

I have been tasked with creating a use开发者_如何学编程r control to live in our master page that allows users to switch between accounts. This way, we can allow users to change their account without having to go back to the accounts page. This seemed like a legitimate and perfectly straightforward task.

I've built the control and added it to the master page using Html.RenderAction. The last step is for me to redirect the user to the home page for that account. In order to do this, I build a route to the home page and attempt return RedirectToRoute(route).

When I attempt this, I get this error:

Child actions are not allowed to perform redirect actions

Anyone have any ideas on how to resolve this or have I coded myself into a box

Thanks in advance


You can cheat with an ugly hack:

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

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

It's so ugly that I feel ashamed for even mentioning it, but it works.

Another possibility would be to pass the url as part of the view model to the view and perform the redirect in javascript by setting window.location.href to the new url.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜