2009-07-22 2 views
2

Ich spiele mit dem ASP.NET MVC Html.Helpers um, und ich bemerkte, dass zum Beispiel sagen:Warum kann ich ein name-Attribut in einem ASP.NET MVC-Formular nicht mit Html.Helpers angeben?

Html.Textbox("test"); 

den Namen Attribut "name=test" und die id Tag wird "id=test"

sein machen Aber wenn ich tun dies:

<%= Html.TextBox("go", null, new { @name = "test2", @id = "test2", @class = "test2" })%> 

id wird "id=test2" aber name wirdsein

Warum wird es nicht überschrieben?

Ich verstehe auch nicht wirklich noch, was das name Tag tatsächlich tut. Ich glaube nicht, dass ich jemals benutzt habe.

PS

ich weiß, dass „Name“ und „id“ wahrscheinlich nicht brauchen, nur „Klasse“ entkommen werden muss, da es ein Schlüsselwort ist, aber ich tue es einfach für alle von ihnen nur so ich Vergessen Sie nicht, es zu tun oder müssen Sie sich sogar daran erinnern, ob etwas ein Schlüsselwort ist oder nicht.

Antwort

3

Das name-Attribut wird beim Zugriff auf den Wert dieses Formularelements auf der Serverseite verwendet. Wie so:

string val = Request.Name["go"]; 

Wie für den Namen Attribut spezifiziert, dann ist auch das, was der erste Parameter der Html.TextBox Methode ist da.

+0

ah ok kann nicht glauben, dass man über meinen Kopf hinweggeflogen ist. Der Parametername heißt "Name" kann nicht glauben, dass ich die Punkte nicht verbinden konnte. Also ich denke, ich sollte fragen, warum wollen sie, dass Sie den Namen und nicht die ID angeben? Ich baue meinen eigenen benutzerdefinierten HTML-Helfer sollte ich nur tun, was sie nur bitten, um den Namen anzugeben? – chobo2

+0

Nun, ich denke, das liegt daran, dass das Attribut name ein Attribut ist, das zu den Eingabeelementen gehört. Dagegen ist die ID attribute ein Standardattribut, das jedem Element auf der Seite zugewiesen werden kann. –

1

ID ist ein eindeutiger Bezeichner in der DOM-Struktur, Name ist Bezeichner innerhalb des Formulars und muss nicht eindeutig sein. Der Name wird nach dem Senden des Formulars verwendet.

1

Da es ein "Helfer" ist, hilft Ihnen, den Namen in den 90% der Fälle nicht einzugeben, wenn Sie ein Textfeld erstellen.

Sie sind frei zu nicht nutzen sie, und nur Typ:

<input type="textbox" 
     name="theNameIReallyWant" 
     value="<%= model.theNameOfThePropertyInTheModel %>"> 

oder besser noch, erstellen Sie Ihre eigenen TextBoxWithCustomName Helfer

2

nicht sicher, dass es an den Fragesteller helfen, aber Sie müssen die verwenden Korrektes Gehäuse. Um "Name" -Attribut zu setzen:

Verwandte Themen