【问题标题】:how can i redirect from void method to a view?如何从 void 方法重定向到视图?
【发布时间】:2017-09-30 01:25:46
【问题描述】:
    [HttpGet]
    public void verifyAccount(string id)
    {
        if (clientDB.verifyAccount(id)!="")
        {


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

        }
        else
        {
            //redirect to error view
        }

    }

我尝试使用 Redirect("Index");但它不起作用,是否无法从 void 方法重定向到视图

【问题讨论】:

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


    【解决方案1】:

    它不正确,但您可以使用 Response.Redirect("~/Home/Login");

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

    【讨论】:

      【解决方案2】:

      是的,你可以使用 HandleUnknownAction

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

      【讨论】:

      • 一种解决方法:使用来自@FPasaoglu 的 sn-p,并使用 IActionResult 进行重定向!
      【解决方案3】:

      您不能从返回 void 的方法重定向。为了重定向,你必须返回一个ActionResult,由于这个方法返回nothing,你显然无法实现。

      将操作的返回类型设置为void 只是一种简单的说法,即它返回带有 200 状态代码且没有响应正文的响应。如果实际情况并非如此,因为它不在这里,那么您的返回类型不应为void。在这里,唯一可能的响应是重定向,因此您的操作应该具有ActionResultRedirectResult 的返回类型。不过,通常最好对所有内容都使用ActionResult,因为它是所有其他类型结果的基类。您甚至可以通过 return new EmptyResult(); 或简单地使用 return null; 来实现与使用 void 相同的效果。

      【讨论】:

      • 这不是一个有用的答案。我已经在我的一个控制器中实现并覆盖了 void HandleUnnknownAction。如果找不到页面上的操作,则会调用它。伟大的。但是,如果找不到,我想将它们重定向到另一个视图。 HandleUnknownAction 无法返回 ActionResult。仍然在这里寻找解决方案。
      【解决方案4】:

      是否无法从 void 方法重定向到视图?

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

      【讨论】:

      • 是否可以从void方法调用ActionResult方法?如果是,那么如何
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 2019-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      相关资源
      最近更新 更多