小编典典

数据输入后修剪字符串的最佳方法。我应该创建自定义模型绑定器吗?

all

我正在使用 ASP.NET
MVC,我希望在将所有用户输入的字符串字段插入数据库之前对其进行修剪。由于我有许多数据输入表单,我正在寻找一种优雅的方式来修剪所有字符串,而不是显式地修剪每个用户提供的字符串值。我很想知道人们如何以及何时修剪字符串。

我考虑过可能创建一个自定义模型绑定器并在那里修剪任何字符串值......这样,我所有的修剪逻辑都包含在一个地方。这是一个好方法吗?是否有任何代码示例可以做到这一点?


阅读 64

收藏
2022-07-29

共1个答案

小编典典

  public class TrimModelBinder : DefaultModelBinder
  {
    protected override void SetProperty(ControllerContext controllerContext, 
      ModelBindingContext bindingContext, 
      System.ComponentModel.PropertyDescriptor propertyDescriptor, object value)
    {
      if (propertyDescriptor.PropertyType == typeof(string))
      {
        var stringValue = (string)value;
        if (!string.IsNullOrWhiteSpace(stringValue))
        {
          value = stringValue.Trim();
        }
        else
        {
          value = null;
        }
      }

      base.SetProperty(controllerContext, bindingContext, 
                          propertyDescriptor, value);
    }
  }

这段代码怎么样?

ModelBinders.Binders.DefaultBinder = new TrimModelBinder();

设置 global.asax Application_Start 事件。

2022-07-29