Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 为非必需的情况显示StringLength消息_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 为非必需的情况显示StringLength消息

Asp.net mvc 3 为非必需的情况显示StringLength消息,asp.net-mvc-3,Asp.net Mvc 3,我有一个@Html.TextBoxFor控件和@Html.ValidationMessageFor,这不是必填字段,但最大长度有限制,而且只允许数字。我在ViewModel中给出了以下代码: [StringLength(10, ErrorMessage = "The field Phone must have a maximum length of 10")] public string Phone { get; set; } 在单击按钮时,我无法检索上述验证消息,因为我输入了

我有一个@Html.TextBoxFor控件和@Html.ValidationMessageFor,这不是必填字段,但最大长度有限制,而且只允许数字。我在ViewModel中给出了以下代码:

    [StringLength(10, ErrorMessage = "The field Phone must have a maximum length of 10")]
    public string Phone { get; set; }
在单击按钮时,我无法检索上述验证消息,因为我输入了超过10个字符。


以及如何验证是否为数字?

您要发布到的控制器操作必须将包含
Phone
属性的视图模型作为参数:

[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
    ...
}
或者,如果不是这种情况,您应该调用内部的
UpdateModel
TryUpdateModel
方法来调用默认模型绑定器,该绑定器负责调用验证逻辑并将任何潜在错误消息插入ModelState

以及如何验证是否为数字

您可以使用正则表达式:

[StringLength(10, ErrorMessage = "The field Phone must have a maximum length of 10")]
[RegularExpression(@"\d*", ErrorMessage = "The field Phone must contain only digits")]
public string Phone { get; set; }
但是你也可以用正则表达式来修复它, 只需谷歌“电话+正则表达式”。非常确定您可以使用regexAttr在maxlength上进行验证

[MaxLength(10, ErrorMessage = "yourmessage")]
public string Phone