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

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

推荐答案

  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();

设置全局.asax应用程序启动事件.

Asp.net相关问答推荐

502 DotNet WebApplication的网关nginx已损坏

DataTables-如何修改来自JSON响应或其他DataTables参数的无结果(ZeroRecords)消息

设置主键时KeyAttribute属性不起作用

在 ASP.NET 中访问没有值的查询字符串参数

asp.net、url 重写模块和 web.config

如何为发布模式设置调试错误

Anti-Forgery Token 适用于不同的基于声明的用户

如何判断 IIS 是处于 32 位还是 64 位模式

'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册.

学习什么 - Ruby on Rails 或 ASP .NET MVC...鉴于熟悉 ASP .NET

是否有用于 Asp.net 标记的#IF DEBUG?

HttpContext.Current.Cache.Insert 和 HttpContext.Current.Cache.Add 有什么区别

ASP.Net:在共享/静态函数中使用 System.Web.UI.Control.ResolveUrl()

如何在同一解决方案中从 MVC 项目调试 Web API 项目

如何从 Asp.net Mvc-3 发送邮箱?

导航到本地 IIS Express 时,Chrome 会返回错误请求 - 请求太长

IIS 8.0 ASP.NET 和错误 500.19

LinkBut​​ton 向 OnClick 后面的代码发送值

Page.IsPostBack 和 Page.IsCallBack 有什么区别?

在 ASP.NET 中使用 SecureString 有什么好处吗?