2010-04-24 4 views
17

Ich verwende Entity Framework (v4) -Entitäten. Ich habe eine Entität namens Auto mit einer Jahr-Eigenschaft des Typs Ganzzahl. Die Year-Eigenschaft lässt NULL nicht zu. Ich habe folgend in meiner erstellen Ansicht:Zeigen Sie leeres Textfeld mit Html.TextBoxFor für eine Nicht-Null-Eigenschaft in einer EF-Entität an

<%= Html.TextBoxFor(model => model.Year) %> 

ich verpflichtet bin, ein neues Auto-Objekt zurück (aufgrund anderer Anforderungen) in meinem HttpGet Aktion im CarController erstellen.

Derzeit wird eine Null im Jahr-Textfeld angezeigt, da die Jahr-Eigenschaft NULL nicht zulässt. Ich möchte ein leeres Textfeld in der Create-Ansicht anzeigen. Wie mache ich das?

Antwort

1

Versuchen Sie stattdessen:

Html.TextBox("Year", "") 
+0

Ich könnte es so tun, aber ich bevorzuge Html.TextBoxFor. – thd

+0

@ Html.TextBoxFor (model => model.Year, new {Value = ""}) erlaubt Modellbindung, diese Antwort nicht. – MeanGreen

38

Verwenden Html Überlastung Attribute. In Rasierer wäre es:

@Html.TextBoxFor(model => model.Year, new { Value = "" }) 
+12

Es ist auch wichtig zu beachten, dass "Value" ein großes "V" haben muss, damit dies funktioniert, aber dies ist die beste Lösung. – blockloop

+3

Da ich auch eine ähnliche Antwort in einer der verknüpften Fragen kommentiert habe ... Es sollte beachtet werden, dass dies nicht gut funktioniert, wenn es mit einer typischen serverseitigen MVC-Validierung verwendet wird, bei der die Ansicht mit den Validierungsfehlern erneut angezeigt wird (Ex; 'if (! ModelState.IsValid) gibt View (Viewmodel)') zurück. Jedes Mal, wenn das Textfeld beim Laden der Seite gerendert wird, wird eine leere Zeichenfolge angezeigt. Dies ist ideal für das regelmäßige erstmalige Rendern der Seite, aber schlecht, wenn der Benutzer aufgrund fehlgeschlagener Validierung zurückkommt. Alle Daten, die sie in die Felder eingegeben haben, gehen verloren und werden durch die leere Zeichenfolge ersetzt. – EF0

-1

Versuchen Sie, dies ist Sie versuchen, Ihr Feld anhängen wollen oder ein vorhandenes Feld mit einem leeren TextBoxFor ändern.

Html.TextBoxFor(model => model.Year, Model.Year="") 
Verwandte Themen