2012-11-15 4 views
2

MVC (어제 시작)를 실험 해본 결과 "사용자 정의 컨트롤"을 만들 수 있는지 궁금합니다.MVC 사용자 정의 편집기 용

내가 좋아하는 뭔가를 다음

제어

@model MvcApplication.Models.StringTemplate 

@Html.LabelFor(model => model.Field, ViewData["LabelText"].ToString()) 
@Html.TextBoxFor(model => model.Field) 

에게

public class RegisterModel 
{ 
    [Required] 
    public StringTemplate UserName { get; set; } 
} 

public class StringTemplate 
{ 
    [Required] 
    public string Field { get; set; } 

    public StringTemplate() 
    { 
     Field = String.Empty; 
    } 

    public StringTemplate(string field) 
    { 
     Field = field; 
    } 
} 
뷰 모델을 렌더링하는 데 사용되는 내보기

@Html.EditorFor(model => model.UserName, "StringTemplate", new {LabelText = "Test" }) 

"사용자 정의보기"에서

내가하려고하는 것은 @ Html.EditorFor를 호출하여 StringTemplate을 사용하고 LabelText 값을 전달합니다. 어떻게 "StringTemplate"뷰에서 "Test"값을 읽을 수 있습니까? 또한 "StringTemplate"보기에서 @ Html.ValidationMessageFor()를 수행 할 수있는 방법이 있습니까? 어떤 자습서 또는이를 도와 줄 수있는 링크가있는 경우

은 ...

감사 감사하겠습니다!

답변

4

나는 당신이해야 할 것보다 더 열심히하고 있다고 생각합니다. 에디터 템플릿이 소비 할 커스텀 클래스를 생성 할 필요가 없습니다. 단지 문자열 만 사용하십시오. 그래서 모델의

:

public class RegisterModel 
{ 
    [Required] 
    public string UserName { get; set; } 
} 

그리고 다음과 같이 보일 것입니다 귀하의 템플릿 ("String.cshtml"라는 이름을하십시오) :

보기에 그런
@model System.String 

@Html.LabelFor(model => model, (string)ViewData["LabelText"]) 
@Html.TextBoxFor(model => model) 

:

@Html.EditorFor(model => model.UserName, new {LabelText = "Test" }) 

ValidationMessageFor와 관련하여 템플릿에도 다음을 추가 할 수 있습니다.

@Html.ValidationMessageFor(model => model) 
+0

감사합니다.이 질문에 대한 답변이 완벽합니다. – user1484089

관련 문제