120,12 http request converted 12012 in double model. read asp.net mvc should handle such things couldn't make work
request:
accept-language:da,en;q=0.8,ru;q=0.6,en-us;q=0.4 ... price: "120,12"
action method' model contains: public double price { get; set; }
inside action:
var uiculture = thread.currentthread.currentuiculture; // {da} var culture = thread.currentthread.currentculture; // {da-dk}
localization controlled in global.asax
inside application_acquirerequeststate
:
var cultureinfo = new cultureinfo("da"); thread.currentthread.currentuiculture = cultureinfo; thread.currentthread.currentculture = cultureinfo.createspecificculture(cultureinfo.name);
thanks in advance help!
you can write custom model binder.
public class decimalmodelbinder : 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 { //check if nullable decimal , null or empty string has been passed var isnullableandnull = (bindingcontext.modelmetadata.isnullablevaluetype && string.isnullorempty(valueresult.attemptedvalue)); //if not nullable , null should try , parse decimal if (!isnullableandnull) { actualvalue = decimal.parse(valueresult.attemptedvalue, numberstyles.any, cultureinfo.currentculture); } } catch (formatexception e) { modelstate.errors.add(e); } bindingcontext.modelstate.add(bindingcontext.modelname, modelstate); return actualvalue; } } }
just change cultureinfo.currentculture of 1 user has selected in decimal.parse statement. register new modelbinder @ startup.
Comments
Post a Comment