Tôi đang tạo một trình kết nối mô hình tùy chỉnh trong một ứng dụng Mvc và tôi muốn phân tích một chuỗi thành giá trị điều tra và gán nó cho thuộc tính mô hình. Tôi đã có nó làm việc overriding phương pháp BindProperty
, nhưng tôi cũng nhận thấy rằng có một phương pháp SetProperty
.Sự khác biệt giữa BindProperty và SetProperty trên IModelBinder
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);
}
Tôi không chắc chắn sự khác biệt giữa hai điều gì và liệu tôi có thực hiện điều này theo cách được đề xuất hay không.
Nguồn hiện tại http://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/DefaultModelBinder.cs – Rob
@Rob URL của bạn không hợp lệ cũng –
@Kilanny, không hợp lệ như thế nào? Nó vẫn có vẻ làm việc cho tôi. – Rob