保存到数据库之前修改用户输入数据

时间:2018-04-11 04:58:21

标签: c# asp.net-mvc validation asp.net-core

在我的创建/编辑视图上我希望用户能够以小写字母和我的代码键入他们的名称,以便在更新数据库之前自动将其更改为大写。我知道这可以使用模型中的属性来完成,例如......

private string name;
public string Name
{
    get
    {
        return name.ToUpper();
    }
    set
    {
        name = name.ToUpper();
    }
}   

以上内容目前适用于我,我确信有更好的方法可以在客户端更接近客户端。但是,我被告知(由我的课程讲师)我应该这样做的方法是将我的模型的元数据类附带的部分类作为IValidatableObject实现,并在验证期间预先形成修改。这看起来像这样......

public class OrderMetadata
{
    public string Name { get; set; }
}

[ModelMetadataTypeAttribute(typeof(OrderMetadata))]
public partial class Order : IValidatableObject
{
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (Name == null || Name.Trim() == "")
            yield return new ValidationResult("Name cannot be empty or just blanks",
                                                new[] { "Name" });
        else Name = Name.Trim().ToUpper(); //supposed to modify the input on submitting
     }

     IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
     {
         yield return ValidationResult.Success;
     }
}

在进行验证时可以进行修改,例如将输入更改为大写,修改它等等。我找不到任何其他参考,这是做到这一点的方式,它也不适合我。这是修改数据的合法方法吗?

我正在使用ASP.NET Core Framework 1.1,如果它是相关的。

修改 我出去了

  IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
         {
             yield return ValidationResult.Success;
         }

在这里修改数据确实有效。听起来好像不是这样做的好形式,但是我认为这是一种方便/简单的方法来完成工作。

0 个答案:

没有答案