私はMVCが新しく、ASP.Net MVC5.Iを使用してウェブサイトを構築していますが、ルーティングコンセプトと少し混乱しています。以下は私が持っているroute.configファイルです。私のホームページやログインページにアクセスして資格情報を入力して[送信]ボタンをクリックすると、私は自分の情報を見つけることができる次のページに行くことができますが、URIは送信ボタンがトリガーされた後のアクション。例えば私のホームログインページURIは、URLを提出する上でクリックしたときに、このMVCルーティング - サブミットボタンをクリックするとURLが変更されます
ある
http://localhost/home/submitになりますが、私はロードビューは これがどのように動作するかわからないaccountInfoの呼び出された場合。
また、ユーザー情報をセッションに保存していますが、ログオフボタンがありますので、セッションをnullに設定してログイン操作にリダイレクトしますが、次にこのようなURLに変更されます。私はroute.configのURLの一部としてパラメータを持つURLは持っていませんが。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Test",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "TESTVIEW", id =
UrlParameter.Optional }
);
routes.MapRoute(
name: "Invoice",
url: "{Home}/{Invoice}/{q}",
defaults: new { controller = "Home", action = "GetInvoice", q =
UrlParameter.Optional }
);
routes.MapRoute(
name: "Error",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Error", id =
UrlParameter.Optional }
);
routes.MapRoute(
name: "ResetPassword",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "ResetPassword", id
= UrlParameter.Optional }
);
routes.MapRoute(
name: "Accounts",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "AccountStatus" }
);
routes.MapRoute(
name: "Register",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Register", id =
UrlParameter.Optional }
);
routes.MapRoute(
name: "Home",
url: "Home",
defaults: new { controller = "Home", action = "Login"}
);
routes.MapRoute(
name: "Home1",
url: "",
defaults: new { controller = "Home", action = "Login" }
);
}
対処方法
/// <summary>
/// Logoffs this instance.
/// </summary>
/// <returns></returns>
public ActionResult Logoff()
{
Session["AccountInfo"] = null;
//return View("Login");
return RedirectToAction("Login", new CustomerModel()); //
View("Login", new CustomerModel());
}
提出する自分の行動には大きな好意になります
[ValidateAntiForgeryToken]
public ActionResult Submit(CustomerModel customerModel)
{
homeAccountViewModel = new HomeAccountStatusViewModel();
homeAccountViewModel.Customer = customerModel;
if (ModelState.IsValidField("Username") &&
(ModelState.IsValidField("Password")))
{
logic here....
return View("AccountStatus", homeAccountViewModel);
}
else
{
return View("Login", customerModel);
}
}
すべてのヘルプを下回っています。あなたのアクションメソッドが実行されると感謝
あなたの 'submit'アクションメソッドはどのように見えますか? – Shyju
について: 'Session.Clear(); Session.Abandon(); '? – Hackerman
投稿アクションメソッドを表示するように編集しました。 – Blossom