【问题标题】:MVC Model doesn't catch all model errorsMVC 模型无法捕获所有模型错误
【发布时间】:2019-10-04 04:00:56
【问题描述】:

这是 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 来生成它,那么我是否应该省略模型字段上的 StringLength 装饰,而是在控制器中为此编写服务器端验证代码? (这违反了 MVC,对吧?)

【问题讨论】:

    标签: model-view-controller modelstate


    【解决方案1】:

    哎呀!对不起! StringLength 正在工作。它只防止多余的字符,而不是最小数量的字符。我知道有强制执行确切长度的代码;我以前看过,会查的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多