Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

[MVC] Login in Partial view

Pagina: 1
Acties:

  • tha_crazy
  • Registratie: maart 2007
  • Nu online
De afgelopen dagen zit ik me aardig te breken over een probleem wat ik heb in MVC.
Ik heb natuurlijk een layout.cshtml waarachter nog een partial view wordt geladen in de header om een gebruiker in te loggen of het gebruikersmenu te laten zien.

Initieel had ik de problemen dat toen ik @Html.Partial("_LoginPartial") gebruikte, ik een error kreeg dat het verkeerde model wordt gebruikt als ik op een pagina kwam waar ook een model gebruikt werd.
Dit heb ik toen veranderd naar @{Html.RenderAction("Login", "User");}
Met als controller code

code:
1
2
3
4
5
        [ChildActionOnly]
        public PartialViewResult Login()
        {
            return PartialView("_LoginPartial");
        }


Dit werkte netjes, ik kon inloggen en naar verschillende pagina's browsen.
Nu loop ik echter er tegen aan dat als ik een form submit, mijn login opnieuw afgaat.
Dus ben weer aan het zoeken, maar ik kan hier geen oplossing voor vinden.

Om in te loggen gebruik ik het volgende:
View
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 @if (User.Identity.IsAuthenticated)
    {
        <div>No login</div>
    }
    else
    {
        using (Html.BeginForm("Login", "User", FormMethod.Post))
        {

        @Html.AntiForgeryToken();
        @Html.ValidationSummary(true, "Login failed.")

        <div class="Login">
               //fields here
        </div>

        }
    }


Controller:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Login(User user)
    {
        if (ModelState.IsValid)
        {
            if (isValid(user.Email, user.Password))
            {
                using (MVCV2DbContext MVCV2DbContext = new MVCV2DbContext())
                {
                    var users = MVCV2DbContext.Users.Single(u => u.Email == user.Email);
                    FormsAuthentication.SetAuthCookie(users.ID.ToString(), false);
                }

                return RedirectToAction("Index", "User");
            }

        }

        return View(user);
    }



Manage (waar het mis gaat)
code:
1
2
3
4
5
6
7
8
using (Html.BeginForm("Manage", "User", FormMethod.Post))
{
    @Html.AntiForgeryToken();
    @Html.ValidationSummary(true, "Not all good")
    <div>
        //fields here
    </div>
}


En de controller ervan
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Manage(User_Details users)
    {
        if (ModelState.IsValid)
        {
            int U_ID = Convert.ToInt32(GetUserIDFromCookie());

            using (MVCV2DbContext MVCV2DbContext = new MVCV2DbContext())
            {
                var user = MVCV2DbContext.User_Details.SingleOrDefault(u => u.User_ID == U_ID);

                if (user != null)
                {
                    user.User_FirstName = users.User_FirstName;
                    user.User_Insertions = users.User_Insertions;
                    user.User_LastName = users.User_LastName;

                    MVCV2DbContext.SaveChanges();
                }

            }
        }
        return View();
    }


Hoe kan ik hier in godsnaam omheen komen anders dan de login in een aparte view te plaatsen die via een knop login te benaderen is?

Acties:
  • 0Henk 'm!

  • jostefa
  • Registratie: januari 2006
  • Nu online
Dus als ik het goed begrijp wordt ieder formulier gepost naar je login action? Ik zou dan even je html valideren of er niet het login formulier de parent is van alle andere formulieren. Dus:

<form action="login">

<form action="manage">
<button type="submit" />
</form>

<form>

[Voor 22% gewijzigd door jostefa op 05-05-2015 13:38]



Apple iPhone 12 Microsoft Xbox Series X LG CX Google Pixel 5 CES 2020 Samsung Galaxy S20 4G Sony PlayStation 5 Nintendo Switch Lite

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True