我有以下问题。
我有一个View类型为SiteAuthenticationVM.cs。
我的视图名称是“SiteAuthentication.cshtml”到文件夹Views / Users
中另一方面,我有一个名为UsersController的控制器,有4个动作:
[HttpGet]
public ActionResult Registration()
{
return View("SiteAuthentication");
}
[HttpPost]
public ActionResult Registration(SiteAuthenticationVM usertoregister)
{
return View("SiteAuthentication",usertoregister);
}
[HttpGet]
public ActionResult Login()
{
return View("SiteAuthentication");
}
[HttpPost]
public ActionResult Login(SiteAuthenticationVM usertologin)
{
return View("SiteAuthentication",usertoregister);
}
我定义了2条路线:
“/ register”由UsersController注册操作处理。
“/ login”由UsersController登录操作处理。
当我发布我的登录表单发布到/ login如果以前我在url“/ register”,它会更改为/ login。有没有办法让我的网址“/注册”两个帖子?
如果网址更改,这是一种不好的做法吗?
答案 0 :(得分:1)
您的URL表示调用的控制器方法,而不是显示View。你不能改变它,这就是MVC的工作方式。如果显示该页面需要“A”,您的浏览器不希望将其URL更改为“B”,您无法在渲染时更改它。
有趣的是,如果你给了你的方法相同的名字,并且以不同的方式命名你的观点,它将毫无障碍地工作: - )
但是,有几种方法可以解决这个问题:
return View("Login")
或return View("Register")
的方法(例如“切换板”)。您的网址将包含“切换台”(您需要一个更好的名称,但您明白了这一点。)请记住,在MVC中,不是关于您正在显示哪个视图,而是关于您呼叫的是哪种方式。