[英]Razor @Html.ValidationMessageFor() not displaying “validation error message”
@Html.RequiredLabelFor(x => x.FirstName)
@Html.TextBoxFor(model => model.FirstName, new { Name = "1.first_name", tabindex = "1" })
@Html.ValidationMessageFor(model => model.FirstName)
將第二個參數傳遞給@Html.TextBox時是否有原因正在驗證該字段但是沒有出現“驗證消息”?
@Html.RequiredLabelFor(x => x.FirstName)
@Html.TextBoxFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
當使用只接受一個參數(lambda表達式)的重載時,“驗證消息”正在正確顯示。
據我所知,實際的財產沒有得到承認?
支持財產:
[StringLength(100, ErrorMessage = "Max length 100 characters")]
[Required(ErrorMessage = "This field is required")]
[Display(Name = "First name")]
public string FirstName { get; set; }
不顯眼的驗證庫使用name屬性標識“要顯示驗證的內容”。 並不是指定額外的屬性會阻止它工作,但是你已經更改了name屬性而沒有反映驗證助手中的新名稱。
您可以停止更改文本框助手中的name屬性(如果使用默認模型綁定器返回視圖 ,則必需) ,或者您可以使用
@Html.ValidationMessage("1.first_name")
除非您使用JS / JQuery來驗證和提交表單數據(通過AJAX), 否則上述方法不是一個好主意,原因是Stephen對此答案的評論。
您已經更改了name
屬性,因此它不僅不會回發並綁定到您的模型,因此jquery.validate.unobtrusive現在不再匹配控件,因為輸入的名稱與關聯的驗證消息不同
<input name="1.first_name" ... />
<span .. data-valmsg-for="FirstName" ..></span> // There is no control named FirstName
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.