2011-12-28 52 views
0

我有以下問題。註冊並在一個頁面中登錄更改我的網址

我有一個View類型SiteAuthenticationVM.cs。

我的視圖的名稱爲「SiteAuthentication.cshtml」到該文件夾​​查看/用戶

對於另一方面,我已要求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「/註冊」,它更改爲/登錄。有沒有辦法讓我的網址「/註冊」這兩個發佈操作?

如果URL更改是不好的做法?

+0

您還可以包含定義您的路線的代碼? – jessegavin 2011-12-28 15:58:45

回答

1

你的URL表示被調用的控制器方法,而不是正在顯示的視圖。你不能改變這一點,這是MVC的工作原理。如果瀏覽器需要'A'來顯示那個頁面,那麼你的瀏覽器就不喜歡將它的URL改爲'B',你不能在rendertime時改變它。

有趣的事情,如果你給你的方法相同的名稱,並已命名不同的意見,就已經順利工作:-)

不過,也有我能想到的幾種方法解決這個問題:

  • 給你的方法相同的名稱。這是最直接的選擇。您可以保留您的視圖名稱,這是重要的方法名稱。
  • 製作調用return View("Login")return View("Register")的方法(例如「Switchboard」)。你的網址將包含「交換機」(你會想要一個更好的名字,但你明白了)。
  • 進行登錄並將頁面註冊到PartialViews中。在1視圖中顯示(「交換機」,同名方法)。然後,URL將始終表示您調用View的方法(「Switchboard」),而不是PartialView。

請記住,在MVC中,它並不是關於您顯示哪個視圖,而是關於您調用哪種方法。

+0

非常明確的答覆,有時我仍然太依附經典的asp.net webforms。問候。 – Jose3d 2011-12-29 07:18:21

相關問題