簡體   English   中英

Razor @ Html.ValidationMessageFor()沒有顯示“驗證錯誤消息”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM