Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 2 如何使用MVC2从控件重定向_Asp.net Mvc 2 - Fatal编程技术网

Asp.net mvc 2 如何使用MVC2从控件重定向

Asp.net mvc 2 如何使用MVC2从控件重定向,asp.net-mvc-2,Asp.net Mvc 2,我的任务是在母版页中创建一个用户控件,允许用户在帐户之间切换。通过这种方式,我们可以允许用户更改其帐户,而无需返回帐户页面。这似乎是一项合法且非常简单的任务 我已经构建了该控件,并使用Html.RenderAction将其添加到母版页。最后一步是将用户重定向到该帐户的主页。为了做到这一点,我构建了一条到主页的路由,并尝试返回RedirectToRoute(路由) 尝试此操作时,会出现以下错误: Child actions are not allowed to perform redirect a

我的任务是在母版页中创建一个用户控件,允许用户在帐户之间切换。通过这种方式,我们可以允许用户更改其帐户,而无需返回帐户页面。这似乎是一项合法且非常简单的任务

我已经构建了该控件,并使用Html.RenderAction将其添加到母版页。最后一步是将用户重定向到该帐户的主页。为了做到这一点,我构建了一条到主页的路由,并尝试返回RedirectToRoute(路由)

尝试此操作时,会出现以下错误:

Child actions are not allowed to perform redirect actions
有没有人知道如何解决这个问题,或者我把自己编码进了一个盒子里


提前感谢

你可以用一个丑陋的黑客作弊:

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

    var url = Url.RouteUrl("routeName", new 
    { 
        action = "foo",
        controller = "bar"
    });
    Response.Redirect(url);
    return null;
}
它太难看了,我甚至为提到它而感到羞愧,但它起作用了


另一种可能是将url作为视图模型的一部分传递给视图,并通过将
window.location.href
设置为新url在javascript中执行重定向。

您认为window.location.href解决方案更可取吗?这两种方法似乎都有点笨拙(并不是说我不欣赏你的建议:)有没有一种更干净的方法来处理这件事,我完全没有想到?@wcm,目前还不太熟悉你的具体情况。这两种方法是我立即想到的。