Toon posts:

[MVC] Login in Partial view

Pagina: 1
Acties:

  • tha_crazy
  • Registratie: maart 2007
  • Laatst online: 20:20
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
  • Laatst online: 16-09 10:33
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]



Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

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

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee