如何从void方法重定向到视图?

时间:2017-05-02 13:34:29

标签: c# model-view-controller asp.net-mvc-5

    [HttpGet]
    public void verifyAccount(string id)
    {
        if (clientDB.verifyAccount(id)!="")
        {


           // Redirect("index");//redirect to index view

        }
        else
        {
            //redirect to error view
        }

    }

我尝试使用Redirect(“Index”);但它不起作用,是否无法重定向到从void方法查看

4 个答案:

答案 0 :(得分:1)

您无法从返回void的方法重定向。为了重定向,您必须返回ActionResult,并且由于此方法返回 nothing ,您显然无法实现。

将操作的返回类型设置为void只是一种简单的方式,它会返回一个包含200状态代码且没有响应正文的响应。如果事实并非如此,因为它不在此处,那么您的返回类型不应为void。此处,唯一可能的响应是重定向,因此您的操作的返回类型应为ActionResultRedirectResult。通常情况下,使用ActionResult通常会更好,因为它是所有其他类型结果的基类。您甚至可以通过执行void或仅return new EmptyResult();来实现与使用return null;相同的功能。

答案 1 :(得分:0)

  

是否无法从void方法重定向到查看?

是。您的操作应返回ActionResult类型并返回重定向(或视图)。

答案 2 :(得分:0)

是的,您可以使用HandleUnknownAction

RedirectToAction("Index").ExecuteResult(this.ControllerContext);

答案 3 :(得分:0)

这不对,但是您可以使用Response.Redirect(“〜/ Home / Login”);

但是在某些情况下,它可能会使antiforgerytokenm抛出异常...