मैं विभिन्न भाषाओं में एक वेबसाइट बनाना चाहता हूं। मैं पहले से ही पढ़ा है कि मैं एक ActionFilter बना सकते हैं, लेकिन मैं एक litte समस्या है:
मैं आपको एक कस्टम ModelBinder बनाने के लिए अंग्रेजी और जर्मन संख्या प्रारूपों (123,456,789.1
बनाम 123.456.789,1
)मॉडलबिंडर का उपयोग करने से पहले संस्कृति बदलें
public class DecimalModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
string key = bindingContext.ModelName;
var v = ((string[])bindingContext.ValueProvider.GetValue(key).RawValue)[0];
float outPut;
if (float.TryParse(v, NumberStyles.Number, System.Globalization.CultureInfo.CurrentCulture, out outPut))
return outPut;
return base.BindModel(controllerContext, bindingContext);
}
}
इस के साथ काम करने के लिए किया था मॉडलबिन्डर वर्तमान संस्कृति का उपयोग यह तय करने के लिए करता है कि किस प्रारूप का उपयोग किया जाता है। लेकिन दुर्भाग्यवश, एक्शनफिल्टर संस्कृति को बदलने से पहले मॉडलबिंडर का उपयोग किया जाता है।
मैं संस्कृति से पहले कैसे बदल सकता हूं मॉडलबिंडर सक्रिय हो जाता है?
यह काम कर रहा है स्थापित करने के लिए अनुमति देता है, आप एक बहुत धन्यवाद! लेकिन मेरे पास एक सवाल है: क्या आप जानते हैं, कोड प्रति अनुरोध 5 बार क्यों निष्पादित किया जाता है? – Christopher
मुझे वह व्यवहार नहीं मिल रहा है। क्या आप ((System.Web.HttpAplication) (प्रेषक)) पर एक घड़ी जोड़ सकते हैं। Request.RawUrl और देखें कि अनुरोध समान हैं या नहीं? – barry
@ क्रिस्टोफर कोड प्रति अनुरोध एक बार निष्पादित किया जाता है (इसलिए नाम BeginRequest) तो शायद पृष्ठ के लिए एक अनुरोध है, और स्टाइलशीट, छवियों या जावास्क्रिप्ट फ़ाइलों के लिए 4 और अधिक है। Request.Url जांचें, जो कुछ प्रकाश डाल सकता है। –