Tôi không chắc chắn nếu nó có thể sử dụng p
aragraph thay vì mặc định span
, vì nó có thể làm cho không thể cho val plugin định vị để đặt thông báo lỗi. Nhưng đối với div -s, thats easy - bạn có thể viết helper html tùy chỉnh.
Nội dung nào đó dọc theo các dòng này (có thể cần kiểm tra/mã hóa thêm). Bạn sẽ cần phải bao gồm không gian tên của phương thức mở rộng tĩnh này trong chế độ xem của bạn hoặc đặt trực tiếp vào số System.Web.Mvc.Html
.
public static class Validator
{
public static MvcHtmlString MyValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
TagBuilder containerDivBuilder = new TagBuilder("div");
containerDivBuilder.AddCssClass("field-error-box");
TagBuilder topDivBuilder = new TagBuilder("div");
topDivBuilder.AddCssClass("top");
TagBuilder midDivBuilder = new TagBuilder("div");
midDivBuilder.AddCssClass("mid");
midDivBuilder.InnerHtml = helper.ValidationMessageFor(expression).ToString();
containerDivBuilder.InnerHtml += topDivBuilder.ToString(TagRenderMode.Normal);
containerDivBuilder.InnerHtml += midDivBuilder.ToString(TagRenderMode.Normal);
return MvcHtmlString.Create(containerDivBuilder.ToString(TagRenderMode.Normal));
}
}
Như bạn thấy, điều này sử dụng phương thức mặc định ValidationMessageFor
để không can thiệp vào quá trình xử lý thông báo lỗi xác thực-plugin.
Và bạn sử dụng này đơn giản, như xác nhận mặc định helper nhắn
@Html.MyValidationMessageFor(model => model.SomeRequiredField)
Đây chỉ là những gì tôi đang tìm kiếm. Tôi chưa hiểu vấn đề với plugin xác thực, nhưng tôi sẽ xem xét vấn đề đó. Cảm ơn! – parleer
Điều này làm việc tốt cho tôi, nhưng hãy chắc chắn để khai báo lớp trợ giúp tĩnh của bạn trong không gian tên System.Web.Mvc.Html và nó sẽ làm việc thực sự tốt. –
Làm cách nào để bạn thực sự thay đổi html được tạo bởi thông báo 'ValidationMessageFor'. Tôi không nói về gói nó trong div khác. Có thể không? –