2011-12-23 28 views
5

Tôi đang xác thực khoảng 10 lần nhập đầu vào trong biểu mẫu. Thẻ ValidationMessageFor phải nằm ở đầu trang, vì vậy tôi viết mọi thứ như sau:MVC3 - Cách chèn ValidationMessageFor với ngắt dòng <br /> ở cuối?

@Html.ValidationMessageFor(model => model.Customer.ADDRESS.NAME) 
@Html.ValidationMessageFor(model => model.Customer.ADDRESS.CITY) 

v.v. Mô hình của tôi trông giống như sau:

[Required(ErrorMessage = Constants.ErrorMsgNameMissing)] 
public string NAME { get; set; } 
[Required(ErrorMessage = Constants.ErrorMsgCityMissing)] 
public string CITY { get; set; } 

Hằng số là Chuỗi. Bây giờ, nếu nhiều hơn một ValidationMessageFor được hiển thị, tất cả chúng đều nằm trong một dòng. Làm cách nào để chèn ngắt dòng như <br /> vào cuối mỗi thư?

Điều này là không đúng cách:

@Html.ValidationMessageFor(model => model.Customer.ADDRESS.NAME)<br /> 
@Html.ValidationMessageFor(model => model.Customer.ADDRESS.CITY)<br /> 

kể từ khi <br /> được hiển thị ngay cả khi không có lỗi ...;)

Cảm ơn trước.

PS: Hiển thị chúng dưới dạng danh sách cũng sẽ tuyệt vời.

+0

Bất kỳ lý do cụ thể tại sao '@ Html.ValidationSummary()' sẽ không đủ? –

+0

Không ... chết tiệt. Đó là quá dễ dàng: p Viết nó trong một câu trả lời và tôi sẽ chấp nhận rằng ... oh người đàn ông. Cảm ơn bạn! – Sleepwalker

+0

Xong. Chúc may mắn! –

Trả lời

3

Tôi nghĩ rằng những gì bạn đang thực sự tìm kiếm là:

@Html.ValidationSummary() 
1

tôi sẽ đi với @ Html.ValidationSummary() nếu có thể

1

Check-out Custom ValidationSummary template Asp.net MVC 3. Tôi nghĩ rằng nó sẽ là tốt nhất cho tình hình của bạn nếu bạn đã hoàn toàn kiểm soát cách xác nhận được trả lại. Bạn có thể dễ dàng viết một phương pháp mở rộng cho ValidationMessageFor.

1

Trên thực tế, ở đầu nên là:

@Html.ValidationSummary(/*...*/) 

Các kiểm chứng thực địa nên với lĩnh vực tương ứng của họ.

Tuy nhiên, nếu bạn hoàn toàn nhấn mạnh vào việc đưa @Html.ValidationMessageFor(/*...*/) ở phía trên sau đó điều chỉnh hành vi bố trí của họ trong CSS của bạn và quên đi những 's <br />

1

Tôi không chắc chắn nếu có một xây dựng trong bằng cách nào, nhưng bạn có thể dễ dàng thực hiện một phương thức Tiện ích mở rộng khác:

public static MvcHtmlString ValidationMessageLineFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression) { 
    return helper.ValidationMessageFor(expression) + "<br />"; 
} 

Điều gì đó tương tự?

Các vấn đề liên quan