Ich habe das gleiche Problem, das viele Leute bereits hatten - Model Binder akzeptiert keine lokalisierte Dezimaleingabe. In allen Threads, hier und anderen Foren, ist die empfohlene Lösung die Implementierung einer benutzerdefinierten ModelBinder
.Implementieren benutzerdefinierter ModelBinder ASP.NET MVC
Mein Problem ist, dass diese Lösungen irgendwie nicht für mich arbeiten. Lassen Sie uns diese Lösung verwenden, zB: comma decimal seperator in asp.net mvc 5
Wenn ich alle Namespaces verweisen, zwei Fehler bleiben:
Fehler CS0115 ‚DecimalModelBinder.BindModel (Controller, ModelBindingContext)‘: keine geeignete Methode gefunden außer Kraft zu setzen .. werden kann.
und
Fehler CS0173 Art des bedingten Ausdrucks nicht davon abhalten verminten , weil es zwischen ‚Bool‘ und ‚Dezimal‘
Wo die zweite verweist auf die gesamte return
Anweisung keine implizite Konvertierung ist.
Hat sich etwas im MVC Framework geändert, so dass dieser Code veraltet ist, oder mache ich etwas falsch?
Der Code, den ich mit am Ende ist:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.ModelBinding;
using System.Web.Mvc;
namespace AetMuzickaOprema.App_Start
{
public class DecimalModelBinder : System.Web.ModelBinding.DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, System.Web.ModelBinding.ModelBindingContext bindingContext) //first error
{
var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
return valueProviderResult == null ? base.BindModel(controllerContext, bindingContext) : Convert.ToDecimal(valueProviderResult.AttemptedValue); //second error
}
}
}
Modell Eigentum in Frage:
[Required]
[Range(typeof(decimal), "0", "999999999")]
public decimal Price { get; set; }
Hier wird erläutert, wie ein benutzerdefiniertes Modellbinder in aktualisierter Weise erstellt wird. https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/custom-model-binding. Wenn Sie Probleme haben, werde ich für Sie bauen, aber zuerst versuchen. – PedroSouki
Danke, ich werde es versuchen und Sie wissen lassen :) Ich weiß es zu schätzen – dzenesiz
@PedroSouki Ich schaue auf den Artikel, seit Sie Ihren Kommentar gepostet, aber ich bin zu neu zu MVC, um es in meinem Fall zu nutzen. Wenn Sie bereit wären, mir zu zeigen, wie man es implementiert, so dass Dezimalwerte sowohl "1,25" als auch "1,25" akzeptieren würden, wäre ich sehr dankbar. – dzenesiz