2017-04-21 3 views
0

Ich versuche, eine Passworteingabe mit Html.PasswordFor() zu erzeugen, aber es scheint, den falschen Namen zu erzeugen.Html-Helfer scheint das falsche Namensattribut zu erzeugen?

Das ist meine gesamte Code:

@using System.Web.UI.WebControls 
@using Duzan.Domain.Entities 
@model IEnumerable<Korisnik> 

@{ 
    ViewBag.Title = "Login"; 
} 

@ViewBag.Nered 



<div class="container"> 
    <div class="row"> 
     @foreach (var k in Model) 
     { 
      <div class="col-xs-6 col-sm-3" style="padding-bottom: 10px;"> 
       <div class="center-block" style="height: 150px; width: 150px; border: black solid 2px; text-align: center"> 
        @k.Ime 
        @using (Html.BeginForm()) 
        { 
         @Html.Hidden("Id", k.Id) 
         @Html.PasswordFor(m => k.Lozinka, new {name = "Lozinka", id = "Lozinka", placeholder = "lozinka", style = "width: 90%"}) 
         <input type="submit" @*style="visibility: hidden"*@/> 
        } 

       </div> 
      </div> 
     } 
    </div> 
</div> 

Dies ist die HTML erzeugt wird:

<input id="Lozinka" name="k.Lozinka" placeholder="lozinka" style="width: 90%" type="password"> 
+0

PasswordFor() nicht benötigen Sie den Namen oder die ID eingestellt als Datenattribut, tut sie es für Sie. Entfernen Sie den Namen und das ID-Attribut. –

+0

@ AlejandroPérezFals das ist das Problem, wenn ich das tue, rendert es als , und natürlich möchte ich, dass es id = "Lozinka", nicht id = "k_Lozinka" oder "k.Lozinka" –

+0

Zuerst verweisen [diese Antwort] (http://stackoverflow.com/questions/30094047/post-an-html -table-to-ado-net-datatable/30094943 # 30094943) - Sie können keine 'foreach'-Schleife verwenden, um Formularsteuerelemente für eine Auflistung zu generieren. Aber Sie sehen keinen Sinn - warum haben Sie mehrere Formulare (Sie können nur eins eingeben), die ein Passwort eingegeben haben? Was versuchst du hier zu machen? –

Antwort

-1

Das Problem ist, dass Sie einen Selektor Ihrer Model (m =>) verwenden, einschließlich anderer Objekt (k). Verwenden Sie nicht die generische Version des Passwort-Widgets. Verwenden

@Html.Password("lozinka", k.Lozinka, new { placeholder = "lozinka", style = "width: 90%"}) 
+0

Danke! Es funktioniert jetzt, aber kann ich wissen, warum ich das PasswordFor() in diesem Fall nicht verwenden sollte? –

+0

PasswordFor verwendet einen Selektor für Ihre Model-Klasse. In diesem Fall ist Ihr Modell ein IEnumerable . Dann versuchen Sie, PasswordFor mit einem Objekt (Korisnik) zu verwenden, das nicht IEnumerable ist

+0

Das generiert nur ungültiges HTML (doppelte ID-Attribute) und erstellt mehrere Steuerelemente mit dem gleichen 'name' Attribut, das nie binden wird, wenn Modell ist eingereicht. –

Verwandte Themen