必须始终将第一个视图称为index.aspx吗?

时间:2012-10-17 00:13:46

标签: c# asp.net-mvc asp.net-mvc-views

我创建了一个名为loginController.cs的控制器,我创建了一个名为login.aspx的视图

如何从loginController.cs调用该视图?

ActionResult始终设置为索引,为了整洁,我想指定控制器在调用时使用的视图,而不是总是调用其默认索引?

希望这是有道理的。

3 个答案:

答案 0 :(得分:2)

为了实际回答问题...您可以在Global.asax中添加路线 ABOVE 您的默认路线:

routes.MapRoute(
    "SpecialLoginRoute",
    "login/",
    new { controller = "Login", action = "Login", id = UrlParameter.Optional }
);

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

..虽然,如果没有正确思考你想要实现的目标(那就是......改变MVC默认做的事情)你最终会遇到很多很多混乱的路线。

答案 1 :(得分:2)

您可以自定义MVC路由中的所有内容 - 对路径的外观没有特别限制(只有排序很重要),您可以使用与方法名称不同的方式命名(通过ActionName属性),您可以为任何名称命名视图想要(即通过名字返回特定的视图)。

return View("login");

答案 2 :(得分:1)

您可以通过操作方法从控制器返回视图。

public class LoginController:Controller
{
  public ActionResult Index()
  {
    return View();
    //this method will return `~/Views/Login/Index.csthml/aspx` file
  }
  public ActionResult RecoverPassword()
  {
    return View();
    //this method will return `~/Views/Login/RecoverPassword.csthml/aspx` file
  }
}

如果您需要返回不同的视图(除了操作方法名称,您可以明确提及它

  public ActionResult FakeLogin()
  {
    return View("Login");
    //this method will return `~/Views/Login/Login.csthml/aspx` file
  }

如果要返回存在于另一个控制器文件夹中的视图,在〜/ Views中,可以使用完整路径

   public ActionResult FakeLogin2()
  {
    return View("~/Views/Account/Signin");
    //this method will return `~/Views/Account/Signin.csthml/aspx` file
  }