在我的创建/编辑视图上我希望用户能够以小写字母和我的代码键入他们的名称,以便在更新数据库之前自动将其更改为大写。我知道这可以使用模型中的属性来完成,例如......
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;
}
在这里修改数据确实有效。听起来好像不是这样做的好形式,但是我认为这是一种方便/简单的方法来完成工作。