0
目前我有針對性的一類,像這樣一個自定義屬性:如何使Html.ValidationMessageFor在兩個屬性上工作?
[PropertiesMustMatch("Password", "PasswordConfirm", ErrorMessage = "Passwords must match!")]
的問題是,在只顯示了在驗證摘要,並且不突出不正確文本框。有沒有辦法做到這一點?
目前我有針對性的一類,像這樣一個自定義屬性:如何使Html.ValidationMessageFor在兩個屬性上工作?
[PropertiesMustMatch("Password", "PasswordConfirm", ErrorMessage = "Passwords must match!")]
的問題是,在只顯示了在驗證摘要,並且不突出不正確文本框。有沒有辦法做到這一點?
模型級驗證表示默認的Mvc綁定器不知道您正在驗證的屬性。
Asp.net Mvc不支持顯示模型級別的錯誤並突出顯示驗證器視圖上的屬性。
我可能會做這樣的事情,以達到視覺效果
<%var passwordCssClass = ViewData.ModelState["Key"] != null && ViewData.ModelState["Key"].Errors.Any() ? "model-error" : string.Empty; %>
<%= Html.PasswordFor(x => x.Password, new { @class = passwordCssClass })%>
<%= Html.PasswordFor(x => x.PasswordConfirm, new { @class = passwordCssClass })%>
你得檢查ModelState中的該ModelBinder的使用爲模型級驗證錯誤的關鍵。用上面的代碼替換上面的「Key」,然後把css類改成w/e,這樣你的錯誤就可能出現錯誤。
這不是生產級別的代碼,您需要調整Any()並確保它是您正在尋找的正確的錯誤消息,甚至可能在控制器中移動此邏輯並提供CssClass視圖它應該通過你的模型來使用。但它應該有希望讓你走。