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");
アクション メソッドを介してコントローラーからビューを返します。
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
}