ログインセクションを作成しようとしています。最初にページを起動すると、指定したURLの/Login
に移動します。あなたが提出し、資格が間違っている場合、私は指定されたURL /Login/Error/{errorid}
でログインページにリダイレクトしたいと思います。 erroridパラメータがルートに追加されるたびにエラールートに入るはずです。それ以外の場合はデフォルトルートを使用します。ASP.NETパラメータに応じて特定のマップされたルートを経由してリダイレクト
しかし私は以下のルートを設定しましたが、動作していないようです。注:私はデフォルトコントローラーを少し変更しました。
routes.MapRoute("Error", "{action}/Error/{errorid}",
new { controller = "Login", action = "Login" }
);
routes.MapRoute("Default", "{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
さらに2つのコントローラがあります。 My Homeコントローラは、ランディングページとログインコントローラの場所です。
アプリケーションを起動するときにもエラーが発生します。インデックスアクションのリダイレクトを実行すると、次のように表示されます。
ルートテーブルのルートが指定された値と一致しません。
にHomeController:
public ActionResult Index()
{
Session["User"] = -1;
return RedirectToAction("Login", "Login");
}
LoginController:
public ActionResult Login(int? errorid)
{
if (Models.User.CheckActiveSession(Convert.ToInt32(Session["User"])))
{
return RedirectToAction("Overview", "Home");
}
return View();
}
public ActionResult ValidateLogin()
{
if (Request.HttpMethod == "POST")
{
int userid = Models.User.CheckLogin(Request.Form["username"], Request.Form["password"]);
if (userid != -1)
{
Session["User"] = userid;
return RedirectToAction("Overview", "Home");
}
}
return RedirectToAction("Login", "Login", new { errorid = 1 });
}
は、私は私がすべてで、これは正しいやっている場合ので、私はわからないんだけど、これに新しいですと言って持っています私はあなたがこれをどうやってできるかについていくつかのガイドを読んだ。任意のヒントが評価されます。あなたがこれを行うことができる他の方法があるなら、私はそれらもまた聞くのが大好きです。
編集:
カスタムルート内で小さな間違いがありました。 erroridパラメーターは、デフォルトパラメーターのオブジェクトにありません。もし私がerrorid = 0
と言うなら、ページはロードされますが、私はURL /Login/Error
を見ます。
また、エラー番号の適切な本文を条件付きで表示するために 'login/error'ビューをコーディングすることもできます。できるだけルーティングテーブルをあまりカスタマイズしない方が良い理由はたくさんあります。カスタムルートを使用するのが間違っていると言っているわけではありません。カスタムルート以外のものを使用する可能性があるユースケースもあります。あなたがカスタムルートにあまりにも頼っているなら、すぐに維持するのが難しいことがわかります。 –
申し訳ありませんが、インデックスページのログインページへの最初のルートが失敗する理由を知っているかもしれません。エラールートが機能しない場合、なぜデフォルトルートを使用しませんか? – Thodor12