2012-09-03 9 views
5

Ich arbeite an einer MVC. NET-Webanwendung und ich verwende Entity Framework zum Generieren von Modell. Ich habe Klassen, die doppelte Attribute enthalten. Mein Problem ist, dass, wenn ich @HTML.EditorFor(model => model.Double_attribute) benutze und meine Anwendung teste ich kann nicht ein Doppel in diesem Editor eingeben, kann ich nur ganze Zahlen eingeben. (Ich benutze die Razor Engine für Ansichten) Wie löst man das? Vielen Dank.Kann kein Doppel in einem Textfeld eingeben

Update: Ich habe festgestellt, dass ich ein Doppel mit diesem Format #, ### (3 Zahlen nach dem Komma eingeben kann, aber ich möchte keinen benutzerdefinierten Typ ein bestimmtes Format, ich möchte alle Formate (1 oder mehr Zahlen nach dem Komma) Hat jemand eine Idee, wie dieses Problem zu lösen Grüße

+1

Ist die Client-Validierung aktiviert? Haben Sie versucht, verschiedene Dezimaltrennzeichen zu verwenden:. und, (Punkt und Komma)? – STO

+0

Dies ist abnormal, es funktioniert, Sie haben wahrscheinlich einige JS-Skripte, die ein Problem verursachen. Entfernen Sie die js-Referenz und versuchen Sie es zu sehen. – Massanu

+0

ja es ist aktiviert. Ich habe mit beiden versucht, aber es hat nicht funktioniert –

Antwort

0

try benutzerdefinierte Databinder zu verwenden:

public class DoubleModelBinder : IModelBinder 
{ 
    public object BindModel(ControllerContext controllerContext, 
     ModelBindingContext bindingContext) 
    { 
     var valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); 
     var modelState = new ModelState { Value = valueResult }; 
     object actualValue = null; 

     try 
     { 
      actualValue = Convert.ToDouble(valueResult.AttemptedValue, 
       CultureInfo.InvariantCulture); 
     } 
     catch (FormatException e) 
     { 
      modelState.Errors.Add(e); 
     } 

     bindingContext.ModelState.Add(bindingContext.ModelName, modelState); 
     return actualValue; 
    } 
} 

und registrieren Bindemittel in global.asax:

protected void Application_Start() 
{ 
    ... 
    ModelBinders.Binders.Add(typeof(double), new DoubleModelBinder()); 
} 
2

Sie Notationen hinzufügen verwenden:

[DisplayFormat(DataFormatString = "{0:#,##0.000#}", ApplyFormatInEditMode = true)] 
public double? Double_attribute{ get; set; } 

Und jetzt ... voila: Sie doppelt in Ihrer Ansicht verwenden können:

@Html.EditorFor(x => x.Double_attribute) 

Für andere Formate Sie this überprüfen könnten, oder einfach nur google " DataFormatString double "Ihre gewünschte Option für dieses Feld.

+0

Ich kann nur ein Doppel geben dieses Format #, ### (3 Zahlen nach dem Komma, aber ich möchte nicht, um Benutzer ein bestimmtes Format, ich möchte alle Formate (1 oder mehr Zahlen nach dem Komma) –

+0

aktualisiert meine Antwort hoffe, es hilft –

Verwandte Themen