2017-05-25 86 views
1

我使用asp.net核心與mvc,在我的應用程序中有一個帳戶控制器註冊和登錄操作,如下所示。成功註冊後登錄用戶無代碼複製

[HttpPost] 
[AllowAnonymous] 
[ValidateAntiForgeryToken] 
public async Task<IActionResult> Register(LoginViewModel loginViewModel) 

[HttpPost] 
[AllowAnonymous] 
[ValidateAntiForgeryToken] 
public async Task<IActionResult> Login(LoginViewModel loginViewModel) 

我想登入註冊成功的用戶,而無需複製到寄存器操作的登錄密碼,所以在短,我如何重定向寄存器後到登錄後與LoginViewModel提交?

是否可以直接從註冊操作調用登錄操作?

爲了簡單/兼容,我使用了相同的對象。

+0

請https://stackoverflow.com /問題/ 16643414/ASP淨MVC-redirecttoaction與 - parame ters-to-post-action –

+0

@JayakrishnanGounder有效,但我仍然擔心這會導致未知的行爲或未來的錯誤,但生病會增加缺乏更好的答案 – mynameisjeff

+0

而不是調用另一個帖子ActionResult,你可以分開登錄代碼並將其聲明爲方法,並從註冊和登錄控制器調用該方法。希望它有幫助。否則,我會發布一些代碼片段 –

回答

0

爲缺乏一個更好的答案,只是生病發布此,直到有人想出了從ASP.NET MVC: RedirectToAction with parameters to POST Action

一個更好的答案只需撥打你想從方法重定向到POST操作你喜歡

return Login(loginViewModel).Result; //for async methods 
return Login(loginViewModel); //for sync methods 

免責聲明:我不知道,如果這是這樣做絕對正確的方式,或者如果打算晚些時候推出任何錯誤,但它的工作原理現在

+0

這似乎是一個較弱的解決方案。重新發布是一個額外的HTTP往返,這會使您的服務器做更多的工作,並且您的網站看起來更慢。您應該將現有方法中的登錄代碼抽象到可從現有Login()和Register()函數中調用的位置,並避免使用額外的POST。 –