1

有没有办法重写显示不同视图而不是 RedirectToAction 或 Redirect 的路径?我不希望 url 改变,但请注意常规 RewritePath 不能“返回”,因此该操作实际上一直在跟踪它!

public ActionResult Register(){
    if (somehting){
        HttpContext.RewritePath(url);
        // I want it to stop here, somehow, but it keeps going and expects a return statement
    }
    return View();
}

更新:我刚刚注意到,当我使用stackoverflow(使用ProcessRequest)中循环的一个时,如果我运行F5它可以工作,但是当我直接访问时,它给了我“'HttpContext.SetSessionStateBehavior'只能在'HttpApplication.AcquireRequestState'事件之前调用长大了。” 这意味着我在 IIS 设置中遗漏了一些东西,它是什么?:秒

[更新]为了明确这一点,我需要重写一个“url”而不是一个动作或视图名称,它必须是一个 url,就像好的旧 RewritePath(url)

4

4 回答 4

1

仅用于动作重定向:

使用样本return RedirectToAction("Action","Controller",new {id=1});

对于网址重定向:

可以使用return Redirect(URL);

HttpContext.RewritePath(url); 之后的表达式 使用 response.end();

于 2012-05-26T14:38:59.303 回答
1

这就是我最终所做的,受到斯蒂芬回答的启发,创建了一个处理返回视图的方法:

首先是 HomeController.cs 下的全局方法(这里是 Home 控制器中的 Timeout):

public ActionResult TimeOut(){
    return View("TimeOut"); // the string is essential
}

其他地方:

if (soemthing){
    return new HomeController().TimeOut(); }

有什么反对意见吗?做错事了?

于 2012-05-31T09:33:57.390 回答
0

返回具有不同模型的不同视图,并且 url 不会改变。

像这样假设您有一个名为 Hello.cshtml 的视图。

return View('Hello',Model);

因此,您返回与操作不同的视图,url 保持不变,用户的视图发生变化。

于 2012-05-30T06:46:08.890 回答
0

除了 Cyril 的回答之外,您还可以直接调用另一个 Controller 方法并返回该方法的结果。假设您有一个方法如下,它返回您想要返回的内容。

    public ActionResult SpecialRegistration()
    {
       //TODO:  implement logic that does stuff
       return View();  // Shows the View named SpecialRegistration
    }

现在在您的常规注册方法中,您可以调用它

    public ActionResult Register(){
        if (something){
            return SpecialRegistration();
        }
   }
于 2012-05-30T17:24:39.320 回答