我创建了一个名为 loginController.cs 的控制器,并创建了一个名为 login.aspx 的视图
如何从 loginController.cs 调用该视图?
ActionResult
总是设置为索引并且为了整洁,我想指定控制器在调用时使用的视图,而不是它总是调用其默认索引?
希望这是有道理的。
我创建了一个名为 loginController.cs 的控制器,并创建了一个名为 login.aspx 的视图
如何从 loginController.cs 调用该视图?
ActionResult
总是设置为索引并且为了整洁,我想指定控制器在调用时使用的视图,而不是它总是调用其默认索引?
希望这是有道理的。
为了实际回答问题..您可以在默认路线上方Global.asax
添加一条路线:
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 默认执行的操作),您最终肯定会遇到很多混乱的路线。
您可以自定义 MVC 路由中的几乎所有内容 - 对路由的外观没有特别限制(只有排序很重要),您可以以不同于方法名称的方式命名操作(通过 ActionName 属性),您可以为视图命名任何您想要的(即通过按名称返回特定视图)。
return View("login");
您通过 Action 方法从控制器返回视图。
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
}