【发布时间】:2016-08-03 15:40:40
【问题描述】:
我是 MVC 新手,我正在使用 ASP.Net MVC5 构建一个网站。我对路由概念有点困惑。以下是我拥有的 route.config 文件。所以每当我进入我的主页或登录页面并输入我的凭据并单击提交按钮时,我确实看到该页面允许我转到可以找到我的信息的下一页,但 URI 更改为提交按钮触发的发布操作。例如,如果我的主页登录页面 URI 是这样的
当点击提交时,网址变为
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操作方法如何? -
怎么样:
Session.Clear(); Session.Abandon();? -
我已编辑以显示提交操作方法。
标签: asp.net asp.net-mvc routing asp.net-mvc-routing