MVC模型无法捕获所有模型错误

时间:2019-05-16 20:10:43

标签: model-view-controller modelstate

这是MVC模型类的一部分:

    [Required]
    [StringLength(2, ErrorMessage = "Two characters.")]
    public string StateProvince { get; set; }

如果我使用空白的StateProvince提交表单,则会收到一条错误消息。如果我在StateProvince中以一个字符提交它,那没问题。这是我找回错误消息的方法:

        if (!ModelState.IsValid)
        {
            MyMessage ErrMsg = new MyMessage();
            ErrMsg.StatusCode = 101;
            ErrMsg.StatusMsg = string.Join("; ", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage));
            return "[" + JsonConvert.SerializeObject(ErrMsg) + "]";
        }

MyMessage的结构如下:

public class MyMessage
{
    public int StatusCode { get; set; }
    public string StatusMsg { get; set; }
}

我是否可以得出结论,StringLength装饰仅用于在html输入字段中创建客户端验证?

由于我自己编写了HTML而不是使用Asp.Net生成HTML,那么我应该只在Model字段上省略StringLength装饰,而是在控制器中为此编写服务器端验证代码吗? (这违反了MVC,对吗?)

1 个答案:

答案 0 :(得分:0)

糟糕!抱歉! StringLength正在工作。它仅防止多余的字符,而不是最少的字符数。我知道有用于强制执行精确长度的代码;我以前看过它,以后会看的。