2012-03-30 11 views
1

Ich habe eine Eigenschaft des Typs "float" in meinem ViewModel. Es wird als TextBox mit dem Standardwert "0" angezeigt.EditorTemplate für "Floats" nicht in ASP.NET MVC 3 aufgerufen werden

ich einen „EditorTemplates“ Ordner innerhalb des „Shared“ Ordner hinzugefügt & eine neue „Float.cshtml“ Datei mit folgendem Inhalt erstellt:

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue == 0 ? "" : ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line" }) 

jedoch nach wie vor, wenn ich die Anwendung ausführen, schweben Felder werden immer noch mit einem Standardwert von 0. angezeigt

Dank

UPDATE ich gerade versuche, zu sehen, wie ASP.NET CUS reagiert tom-Vorlagen, bis jetzt, wird der Motor nicht mein eigenes Template, um etwas ähnliche Verarbeitung:

LatLng.cshtml 

@model float 
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line "}) Latitude 

Auf dem Ansichtsmodell,

[UIHint("LatLng")] 
    public float? Latitude { get; set; } 

Auf der Ansicht,

@Html.EditorFor(model => model.Latitude) 

Nichts ist Ändern, Standardvorlage wird verwendet.

+1

Sie zeigen nicht, wie Sie den Editor zu Ihrem Formular/Markup hinzufügen. Verwenden Sie 'Html.EditorFor()'? –

Antwort

0

Eine einfache Problemumgehung ist, wenn Sie ViewData.TemplateInfo.FormattedModelValue nur festlegen, um eine Zeichenfolge in dem Modell zurückzugeben, so dass Sie diese seltsame Logik auf der Ansicht nicht ausführen müssen. Wenn Sie einen neuen Wert (für Editierzwecke) bereitstellen müssen, müssen Sie lediglich eine Logik im Controller hinzufügen, um die Zeichenfolge wieder in einen Float umzuwandeln.

5

Float ist eigentlich kein .NET-Typ, es ist ein C# -Typ. Float wird System.Single zugeordnet, daher müssen Sie ein Single.cshtml und kein Float.cshtml erstellen.

Sie können dies auch umgehen, indem Sie ein UIHint-Attribut für die Modelldaten angeben oder indem Sie die Vorlage angeben, die in Ihren Editor- oder EditorFor-Methoden verwendet werden soll.

+0

Ist es normal, wenn die auf dem Bildschirm angezeigte Textbox den Wert 0 enthält? Auch, ich bin sehr neu in Vorlagen, was ist die Idee dahinter, wie man mit ihnen arbeitet? Danke – Bill

+0

Ja, numerische Textfelder zeigen standardmäßig immer eine 0 an. Templates sind im Grunde die MVC-Version eines Benutzersteuerelements, mit denen Sie ein benutzerdefiniertes Display für jeden beliebigen Typ erstellen können. – mattytommo

+0

@bhaidar - Wenn es eine 0 enthält, wird es eine 0 anzeigen. Ja, es ist normal, dass es zeigt, was Wert in dem Datenelement ist. –