Response.Redirect 可以在私有 void MVC 2 函数中工作吗?

Posted

技术标签:

【中文标题】Response.Redirect 可以在私有 void MVC 2 函数中工作吗?【英文标题】:Can Response.Redirect work in a private void MVC 2 Function? 【发布时间】:2010-05-13 12:55:00 【问题描述】:

我为某些验证设置了一个私有 void 函数。如果我的验证失败,我想重定向到另一个 ActionResult 并终止正在使用的 ActionResult 的进程。 Response.Redirect("controllerName") 没有帮助。有什么想法吗?

[Accept(HttpVerbs.Post)]
public ActionResult NerdDinner(string Name)

   testName(Name);
   ...
   Return RedirectToAction("ActionResultAAA"); 


private void testName(string name)  

    if(name == null)
    
        //Response.Redirect("ActionResultBBB");
    

【问题讨论】:

【参考方案1】:

您可以在任何您喜欢的地方使用 Response.Redirect,但您需要提供正确的(相对或绝对的)URL,而不仅仅是操作名称。但是,最好坚持 MVC 模式并执行以下操作:

[Accept(HttpVerbs.Post)] 
public ActionResult NerdDinner(string Name) 
 
   ActionResult testResult = testName(Name)
   if (testResult != null) return testResult;
   ... 
   return RedirectToAction("ActionResultAAA"); 
 

private ActionResult testName(string name) 
 
    if(name == null) 
     
        return RedirectToAction("ActionResultBBB"); 
     

    return null;

【讨论】:

也就是说,你可以这样做,但不要这样做。 私有方法中,如果名称不为空,是否需要返回任何东西?

以上是关于Response.Redirect 可以在私有 void MVC 2 函数中工作吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在Response.Redirect中使用TempData吗?

Response.Redirect打开新页面

Server.Transfer 和 Response.Redirect 用法区别

asp怎样用response.Redirect进行页面跳转。

response.redirect 用法

Server.Transfer和Response.Redirect区别