所有你需要做的就是創建一個自定義模型粘合劑並重寫SetProperty
方法來清理。
public class CustomModelBinder: DefaultModelBinder
{
protected override void SetProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor, object value)
{
if (propertyDescriptor.Attributes.Contains(new Clean()) && propertyDescriptor.PropertyType == typeof(string))
{
value = value != null ? ((string)value).Replace("%", "") : value;
}
base.SetProperty(controllerContext, bindingContext, propertyDescriptor, value);
}
}
您可以使用任何這些選項來使用您的自定義模型聯編程序。
註冊自定義粘合劑用於特定模型中的Global.asax.cs
ModelBinders.Binders.Add(typeof(MyModel), new CustomModelBinder());
註冊自定義粘合劑在動作參數
public ActionResult Save([ModelBinder(typeof(CustomModelBinder))]MyModel myModel)
{
}
註冊自定義粘合劑作爲默認模型綁定器。
ModelBinders.Binders.DefaultBinder = new CustomModelBinder();
我有很多的模型和裝飾它的屬性將是首選,但是我可以去使用靜態方法,它在每個屬性內。 –