这是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,对吗?)
答案 0 :(得分:0)
糟糕!抱歉! StringLength正在工作。它仅防止多余的字符,而不是最少的字符数。我知道有用于强制执行精确长度的代码;我以前看过它,以后会看的。