Như nhận xét của smnbss trong câu trả lời của Darin Dimitrov, Prompt
tồn tại cho chính xác mục đích này, vì vậy không cần tạo thuộc tính tùy chỉnh . Từ tài liệu:
Nhận hoặc đặt một giá trị sẽ được sử dụng để đặt hình mờ cho lời nhắc trong giao diện người dùng.
Để sử dụng nó, chỉ cần trang trí thuộc tính của mô hình xem của bạn như sau:
[Display(Prompt = "numbers only")]
public int Age { get; set; }
Văn bản này sau đó được đặt một cách thuận tiện ModelMetadata.Watermark
. Ngoài ra, mẫu mặc định trong MVC 3 bỏ qua thuộc Watermark
tính, nhưng làm cho nó hoạt động thực sự đơn giản. Tất cả những gì bạn cần làm là tinh chỉnh mẫu chuỗi mặc định, để cho MVC biết cách hiển thị nó. Chỉ cần chỉnh sửa String.cshtml, giống như Darin, ngoại trừ việc thay vì lấy hình mờ từ đó ModelMetadata.AdditionalValues
, bạn sẽ có được nó ngay từ ModelMetadata.Watermark
:
~ / Lượt xem / Đã chia sẻ / EditorTemplates / String.cshtml:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", placeholder = ViewData.ModelMetadata.Watermark })
Và đó là nó.
Như bạn có thể thấy, chìa khóa để làm cho mọi thứ hoạt động chính là placeholder = ViewData.ModelMetadata.Watermark
bit.
Nếu bạn cũng muốn bật tính năng đánh dấu nước cho các hộp văn bản nhiều dòng (textareas), bạn làm tương tự cho MultilineText.cshtml:
~ / Lượt xem / Chia sẻ / EditorTemplates / MultilineText.cshtml:
@Html.TextArea("", ViewData.TemplateInfo.FormattedModelValue.ToString(), 0, 0, new { @class = "text-box multi-line", placeholder = ViewData.ModelMetadata.Watermark })