asp.net - MVC5: Login form in Layout page -


i'm quite new mvc please me understand how following. know when create new mvc5 project wants use login page separate page when want log in (i.e. _loginpartial view actionlink login controller returns view).

what i'm trying accomplish have login form throughout whole site (when user not logged in yet) did following changes:

_layout view:

@html.partial("_loginpartial") 

_loginpartial view:

using (html.beginform("login", "account", new { returnurl = request.querystring["returlurl"] }, formmethod.post, new { @class = "navbar-form navbar-right form-inline", role = "form" })) {     @html.antiforgerytoken()     <div class="form-group">         @html.textboxfor(m => m.username, new { @class = "form-control input-sm", placeholder = "username" })         @html.passwordfor(m => m.password, new { @class = "form-control input-sm", placeholder = "password" })     </div>     <input type="submit" value="log in" class="btn btn-default btn-sm" /> } 

look it's working fine when username/password exists, logs user in , redirects him home page when returnurl not found in querystring. however, when fails log in loads original login view separate page because login controller returns full view:

if (modelstate.isvalid)         {             var user = await usermanager.findasync(model.username, model.password);             if (user != null)             {                 await signinasync(user, model.rememberme);                 return redirecttolocal(returnurl);             }             else             {                 modelstate.addmodelerror("", "invalid username or password.");             }         } // if got far, failed, redisplay form return view(model); 

i don't want that. want have login form on pages , able log in page , show errors on page user on instead of redirecting him original login page. how without resorting javascript/ajax?

thank much!

this because returnurl account/login. has been set in web.config

<forms loginurl="~/account/login" timeout="2880" />  if (user != null) {     await signinasync(user, model.rememberme);     return redirecttolocal(returnurl); } 

so, either change loginurl default page or in html.beginform().

returnurl = httpcontext.current.request.rawurl 

it gets current requested page , sets returnurl.

using (html.beginform("login", "account", new { returnurl = httpcontext.current.request.rawurl }, formmethod.post, new { @class = "navbar-form navbar-right form-inline", role = "form" })) {     //your code } 

Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -