Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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
C# Razor@Html.ValidationMessageFor()不显示;验证错误消息";_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# Razor@Html.ValidationMessageFor()不显示;验证错误消息";

C# Razor@Html.ValidationMessageFor()不显示;验证错误消息";,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,将第二个参数传递给@Html.textbox以验证字段,但未显示“验证消息”是否有原因 @Html.RequiredLabelFor(x => x.FirstName) @Html.TextBoxFor(model => model.FirstName, new { Name = "1.first_name", tabindex = "1" }) @Html.ValidationMessageFor(model => model.FirstName) 使用只接受一个参数(la

将第二个参数传递给@Html.textbox以验证字段,但未显示“验证消息”是否有原因

@Html.RequiredLabelFor(x => x.FirstName)
@Html.TextBoxFor(model => model.FirstName, new { Name = "1.first_name", tabindex = "1" })
@Html.ValidationMessageFor(model => model.FirstName)
使用只接受一个参数(lambda表达式)的重载时,“验证消息”显示正确

据我所知,实际财产未被确认

支持属性:

@Html.RequiredLabelFor(x => x.FirstName)
@Html.TextBoxFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)

不引人注目的验证库使用name属性标识“要显示验证的内容”。并不是说指定额外属性会使其停止工作,而是您更改了name属性,并且没有在验证助手中反映新名称

您可以停止更改textbox帮助器中的name属性(如果使用默认模型绑定器返回视图,则需要更改),也可以使用

[StringLength(100, ErrorMessage = "Max length 100 characters")]
[Required(ErrorMessage = "This field is required")]
[Display(Name = "First name")]
public string FirstName { get; set; }

上述方法不是一个好主意,除非您使用JS/JQuery(通过AJAX)验证和提交表单数据,因为Stephen在对该答案的评论中给出了原因。

您已经更改了
name
属性,因此它不仅不会发回并绑定到您的模型,jquery.validate.unobtrusive现在无法再匹配控件,因为输入的名称与关联的验证消息的名称不同

@Html.ValidationMessage("1.first_name")

//没有名为FirstName的控件

不要使用
@Html.ValidationMessage(“1.名字”)
。这不仅意味着回发时所有模型绑定都会丢失,而且如果返回视图,则此属性将永远不会显示
ModelState
错误
<input name="1.first_name" ... />
<span .. data-valmsg-for="FirstName" ..></span> // There is no control named FirstName