Darin Dimitrov의 답변에 smnbss가 언급했듯이 Prompt
정확히이 목적을 위해 존재하므로 사용자 지정 속성을 만들 필요 가 없습니다 . 문서에서 :
UI의 프롬프트에 대한 워터 마크를 설정하는 데 사용할 값을 가져 오거나 설정합니다.
그것을 사용하려면 다음과 같이 뷰 모델의 속성을 장식하십시오.
[Display(Prompt = "numbers only")]
public int Age { get; set; }
이 텍스트는에 편리하게 배치됩니다 ModelMetadata.Watermark
. 기본적으로 MVC 3의 기본 템플릿은Watermark
속성을 하지만 작동하는 것은 정말 간단합니다. MVC에 렌더링 방법을 알려주기 위해 기본 문자열 템플릿을 수정하기 만하면됩니다. Darin처럼 String.cshtml을 편집하십시오. 단,에서 워터 마크를 가져 오는 대신 다음에서 ModelMetadata.AdditionalValues
바로 가져옵니다 ModelMetadata.Watermark
.
~ / Views / Shared / EditorTemplates / String.cshtml :
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", placeholder = ViewData.ModelMetadata.Watermark })
그리고 그게 다입니다.
보시다시피 모든 것을 작동시키는 핵심은 placeholder = ViewData.ModelMetadata.Watermark
비트입니다.
여러 줄 텍스트 상자 (텍스트 영역)에 대해 워터 마크를 활성화하려면 MultilineText.cshtml에 대해서도 동일한 작업을 수행합니다.
~ / Views / Shared / EditorTemplates / MultilineText.cshtml :
@Html.TextArea("", ViewData.TemplateInfo.FormattedModelValue.ToString(), 0, 0, new { @class = "text-box multi-line", placeholder = ViewData.ModelMetadata.Watermark })