पर बाइंडप्रोपर्टी और सेटप्रोपर्टी के बीच क्या अंतर है, मैं एक एमवीसी एप्लिकेशन में एक कस्टम मॉडल बाइंडर बना रहा हूं और मैं एक स्ट्रिंग को एक गणना मूल्य में पार्स करना चाहता हूं और इसे मॉडल प्रॉपर्टी में असाइन करना चाहता हूं। मुझे BindProperty
विधि को ओवरराइड करने में काम मिल गया है, लेकिन मैंने यह भी देखा कि SetProperty
विधि है।आईमोडेल बाइंडर
protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor)
{
switch (propertyDescriptor.Name)
{
case "EnumProperty":
BindEnumProperty(controllerContext, bindingContext);
break;
}
base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
}
private static void BindEnumProperty(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var formValue = controllerContext.HttpContext.Request.Form["formValue"];
if (String.IsNullOrEmpty(formValue))
{
throw new ArgumentException();
}
var model = (MyModel)bindingContext.Model;
model.EnumProperty = (EnumType)Enum.Parse(typeof(EnumType), formValue);
}
मुझे यकीन नहीं है कि दोनों के बीच क्या अंतर है और क्या मैं इसे अनुशंसित तरीके से कर रहा हूं।
स्रोत अमान्य कैसे http://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/DefaultModelBinder.cs – Rob
@Rob आपके URL में –
@Kilanny अमान्य है पर अब है? यह अभी भी मेरे लिए काम करता प्रतीत होता है। – Rob