如何重定向到动作中的另一个动作。

时间:2014-03-21 21:30:18

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

我试图通过控制器更改当前视图。

public ActionResult login(string str)
{
  if(str=="true")
  {
    return View("index");
  }
  else
  {
    return View("error");
  }
}

public ActionResult index()
{
  return View();
}

public ActionResult error()
{
  return View();
}

我将所有这些操作放在同一个控制器中,并将视图文件放在同一目录中。

3 个答案:

答案 0 :(得分:2)

我认为你正在尝试重定向到另一个动作。您可以使用RedirectToAction(..)函数来实现此目的。

例如,如果您的操作定义如下:

public ActionResult Action1()
{
   /* code omitted */
}

您可以像操作中的任何位置一样重定向到它:

return RedirectToAction("Action1");

如果要重定向到另一个控制器中的操作,可以使用

return RedirectToAction("Action1", "ControllerName");

如果操作采用参数或路由参数,则可以使用

return RedirectToAction("Action1", "ControllerName", new { param1 = value1, param2 = value2 });

BTW, 如果您正在尝试实施身份验证机制,这是错误的方法。您应该使用[授权]属性或开发自定义身份验证。您可以阅读this

答案 1 :(得分:0)

由于您希望在允许用户访问Index之前验证用户,因此MVC具有内置的类属性,您可以使用该属性将用户重新路由到登录表单。

[Authorize]
public ActionResult Index()
{return View();}

答案 2 :(得分:0)

你可以使用:

RedirectToAction("actionName", "controllerName");