1

loginController.cs というコントローラーを作成し、login.aspx というビューを作成しました。

loginController.cs からそのビューを呼び出すにはどうすればよいですか?

ActionResult常にインデックスに設定されており、きちんと整理するために、コントローラーが常にデフォルトのインデックスを呼び出すのではなく、呼び出されたときに使用するビューを指定したいですか?

それが理にかなっていることを願っています。

4

3 に答える 3

2

実際に質問に答えるために..デフォルトルートの上にルートを追加できます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 がデフォルトで行うことを変更すること) を適切に検討しないと、非常に多くの厄介なルートになってしまうことになります。

于 2012-10-17T00:22:48.260 に答える
2

MVCルーティングのほとんどすべてをカスタマイズできます-ルートがどのように見えるかについて特に制限はありません(順序のみが重要です)、メソッド名とは異なるアクションに名前を付けることができます(ActionName属性を介して)、ビューに好きな名前を付けることができます(つまり特定のビューを名前で返すことによって)。

return View("login");
于 2012-10-17T00:38:37.007 に答える
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
  }
于 2012-10-17T00:47:50.580 に答える