Programing

@ Html.DisplayFor 구문은 무엇입니까?

lottogame 2020. 4. 25. 09:47
반응형

@ Html.DisplayFor 구문은 무엇입니까?


Razor에서 @Html은 링크, 입력 등을위한 HTML 생성과 같은 여러 가지 깔끔한 작업을 수행합니다.

그러나 DisplayFor 함수를 얻지 못했습니다 ...

내가 쓰는 이유는 무엇입니까?

@Html.DisplayFor(model => model.Title)

내가 쓸 수있을 때 :

@Model.Title

Html.DisplayFor() 속성 유형과 일치하는 DisplayTemplate을 렌더링합니다.

찾을 수 없으면 호출한다고 가정합니다 .ToString().


디스플레이 템플릿에 대해 잘 모르면 DisplayTemplates컨트롤러와 연결된보기 폴더 내의 폴더에 넣을 수있는 부분보기입니다 .


예:

다음 코드 를 사용하여보기 폴더 String.cshtmlDisplayTemplates폴더 안에 이름이 지정된보기를 만드는 경우 (예 : Home또는 Shared) :

@model string

@if (string.IsNullOrEmpty(Model)) {
   <strong>Null string</strong>
}
else {
   @Model
}

그런 다음 문자열 @Html.DisplayFor(model => model.Title)이라고 가정 Title하면 템플릿을 사용 <strong>Null string</strong>하고 문자열이 null이거나 비어 있으면 표시 됩니다.


자신의 디스플레이 템플릿을 정의하거나 데이터 주석을 사용하면 주요 이점이 있다고 생각합니다.

예를 들어 제목이 날짜 인 경우

[DisplayFormat(DataFormatString = "{0:d}")]

그런 다음 모든 페이지에서 값을 일관된 방식으로 표시합니다. 그렇지 않으면 여러 페이지에서 디스플레이를 사용자 정의해야 할 수도 있습니다. 따라서 일반 문자열에는별로 도움이되지 않지만 통화, 날짜, 전자 메일, URL 등에 도움이됩니다.

예를 들어 이메일 주소가 일반 문자열이 아닌 링크로 표시 될 수 있습니다.

<a href="mailto:@ViewData.Model">@ViewData.TemplateInfo.FormattedModelValue</a>

DisplayFor템플릿에 유용합니다. 모델의 템플릿을 작성하고 다음과 같이 할 수 있습니다.

@Html.DisplayFor(m => m)

와 유사합니다 @Html.EditorFor(m => m). DRY 프린시 펄에 유용하므로 동일한 모델에 대해 동일한 디스플레이 로직을 반복해서 쓸 필요가 없습니다.

MVC2 템플릿에 대한이 블로그를 살펴보십시오. 여전히 MVC3에 매우 적용 가능합니다.

http://www.dalsoft.co.uk/blog/index.php/2010/04/26/mvc-2-templates/


모델에 데이터 주석이있는 경우에도 유용합니다. 예를 들어 모델의 속성이 EmailAddress데이터 주석으로 장식되어 있으면 링크 DisplayFor로 렌더링됩니다 mailto:.


얼마 동안 나 자신에 대한 답을 찾은 후에 뭔가를 찾을 수있었습니다. 일반적으로 하나의 속성에만 사용하는 경우 생성 된 HTML의 "소스보기"를 수행해도 동일하게 나타납니다. 예를 들어, 클래스의 Name 속성 만 표시하려는 경우 HTML이 생성됩니다.

    <td>
    myClassNameProperty
    </td>
   <td>
    myClassNameProperty, This is direct from Item
    </td>

이것은 아래 코드에서 생성 된 HTML입니다.

<td>
@Html.DisplayFor(modelItem=>item.Genre.Name)            
</td>

<td>
@item.Genre.Name, This is direct from Item
</td>

동시에이 경우 클래스 "장르"에 대한 하나의 문장으로 모든 속성을 표시하려면 @ Html.DisplayFor ()를 사용하여 입력을 저장할 수 있습니다.

다음과 같이 장르의 각 속성에 대해 별도의 문을 작성하는 대신 @ Html.DisplayFor (modelItem => item.Genre)을 쓸 수 있습니다

@item.Genre.Name
@item.Genre.Id
@item.Genre.Description

속성 수에 따라 달라집니다.

참고 URL : https://stackoverflow.com/questions/6365633/what-is-the-html-displayfor-syntax-for

반응형