.net - asp.net mvc 3 是否有自动服务器端验证?

标签 .net asp.net-mvc-3 validation

我有一个 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)器。

有关该主题的一些有用信息 here和一篇关于 Binder 和验证管道的好文章 here .

关于.net - asp.net mvc 3 是否有自动服务器端验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7255705/

相关文章:

.net - C# : How to structure async/await code where many requests are made for the same, 返回数据慢,这都满足了

c# - 如何解析节点名称中包含无效字符的XML?

asp.net - MVC 中最后修改的 header

jquery - mvc3自定义验证属性不在客户端验证

angularjs - 由嵌套指令处理的验证输入

validation - 单击特定按钮时如何跳过验证?

.net - 为什么 TableAdapter 会为整个时间戳列使用 "1/1/2000"填充数据集?

asp.net-mvc-3 - Html.Display 不适用于 ViewBag

json - 如何在 Gradle 构建中验证 JSON

.net - 控制错误的数据绑定(bind)