2013-11-09 2 views
0

프로젝트에 ASP.NET MVC 5를 사용하고 있으며 MVC 모델 바인딩 기능을 좋아하지만 javascript MVVM을 사용하기 때문에 MVC를 많이 사용하지 않습니다. 시스템, 나는 모델 바인더로 이것을하기가 어렵다는 것을 알았습니다.ASP.NET MVC 5 : EditorTemplates를 스 니펫으로 사용하기

그러나 여러 곳에서 복제해야하는 특정 입력에 대해 HTML 코드를 많이 재사용하고 있습니다.

@Html.EditorFor 등을 사용하고 속성을 지정하는 대신 특정 인 템플릿을 호출하여 작은 인라인 스 니펫 엔진처럼 사용할 수 있습니까?

업데이트

는 얘들 아, 나는 부분 뷰를 사용하는 제안에 갔다,하지만 난 조금 그것을 변경. 피드백에 대한 내 StackOverflow 내 솔루션을 게시하고 싶습니다, 나는 이것이 좋은 연습인지 아닌지 알고 싶지만, 지금은 대답을 수락하고 있습니다.

답변

1

사용자 인터페이스를 사용할 수 있습니다. 다음 단계를 수행하십시오.

보기로 이동 \ 공유 [EditorTemplates] 폴더를 작성하십시오. 다음 각 유형에 대한 자신의 * .cshtml 파일을 만들거나 UIHint은 INT 유형에 따를 Int32.cshtml 만들기 예를 들어 속성 :

@model int? 

@{ 
    int i; 
    if (!Model.HasValue) 
    { 
     i = 0; 
    } 
    else 
    { 
     i = Model.Value; 
    } 

    var htmlAttributes = new RouteValueDictionary(); 
    if ([email protected] != null) 
    { 
     htmlAttributes.Add("class", "form-control " + [email protected]); 
    } 
    else 
    { 
     htmlAttributes.Add("class", "form-control"); 
    } 

    if (ViewBag.placeholder != null) 
    { 
     htmlAttributes.Add("placeholder", ViewBag.placeholder); 
    } 
} 

<div class="[email protected](Html.ValidationErrorFor(m => m, " has-error"))"> 
    @Html.LabelFor(m => m, new { @class = "control-label" }) 
    <div class="controls"> 
     @Html.TextBox(
      "", 
      ViewData.TemplateInfo.FormattedModelValue, 
      htmlAttributes) 
     @Html.ValidationMessageFor(m => m, null, new { @class = "help-block" }) 
    </div> 
</div> 
1

부분보기를 사용할 수 있습니다.