0
/api/WebService?param1=1&price=6.2 working
/api/WebService?param1=1&price=6,2 not working. The request is invalid error.

paramètres région Server définis en fonction des virgules et je peux mettre la mondialisation « tr-TR » sur webconfig mais il ne fonctionne pas avec une virgule. D'ailleurs j'ai essayé ModelBinder cependant cela ne fonctionne pas non plus.Gestion des paramètres décimales dans WebAPI

Comment puis-je le faire fonctionner avec une virgule?

+0

vous devez faire le paramètre de prix en tant que type de chaîne. Peut-être que c'est en utilisant décimal maintenant –

+0

oui c'est une des solutions mais pas ce que je voulais malheureusement. –

Répondre

0

liant modèle d'utilisation comme ceci:

public class DecimalModelBinder : IModelBinder 
{ 
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
    { 
    ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); 
    ModelState modelState = new ModelState { Value = valueResult }; 
    object actualValue = null; 
    try 
    { 
     actualValue = Convert.ToDecimal(valueResult.AttemptedValue, CultureInfo.CurrentCulture); 
    } 
    catch (FormatException e) 
    { 
     modelState.Errors.Add(e); 
    } 

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


protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 
    RegisterGlobalFilters(GlobalFilters.Filters); 
    RegisterRoutes(RouteTable.Routes); 

    //HERE you tell the framework how to handle decimal values 
    ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder()); 

    DependencyResolver.SetResolver(new ETAutofacDependencyResolver()); 
} 

Résultats: ASP.NET MVC datetime culture issue when passing value back to controller