我有一个 asp.net mvc 3 应用程序,现在正尝试向它添加一些验证。我正在测试一个干净的解决方案。我不想在客户端进行验证(目前),所以我在 Web.config 中禁用了它:
<add key="ClientValidationEnabled" value="false"/>
我有一个实现 IValidatableObject 的简单类,我想使用 Validate 函数进行验证(而不是属性)。
public class SomeClass : IValidatableObject
{
public int Id { get; set; }
public int LowNumber { get; set; }
public int HighNumber { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (LowNumber > HighNumber)
{
yield return new ValidationResult("LowNumber should not be higher than HighNumber.");
}
}
}
现在进入问题。服务器端验证是否自动应用,如何应用?我该如何禁用它?我想自己控制它 - 在我的帖子操作中说这样的话:
[HttpPost]
public string SomeAction(SomeClass model)
{
if (TryValidateModel(model))
return "All good";
else
return "No good";
}
这样做会使验证被调用和显示两次。一次是因为这个电话,一次是来自其他人。谁?
最佳答案
如果您使用验证属性(或 IValidatableObject 接口(interface)),那么服务器端验证将始终在使用模型绑定(bind)器绑定(bind)模型时完成。如果您想覆盖服务器端验证,我相信您需要创建自己的模型绑定(bind)器。
关于.net - asp.net mvc 3 是否有自动服务器端验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7255705/