반응형
asp.net MVC에서 LabelForHelper를 사용하지 않고 DisplayName 특성을 가져옵니다.
모델에서 항목의 표시 이름 속성을 검색하는 가장 좋은 방법은 무엇입니까?많은 사람들이 모든 것에 LabelFor 도우미를 사용하는 것을 볼 수 있지만, 데이터를 나열하려면 레이블이 적합하지 않습니다.예를 들어, 단락으로 출력하려면 이름 속성을 쉽게 얻을 수 있는 방법이 있습니까?
<p>
<%= Html.Encode(
ModelMetadata.FromLambdaExpression<YourViewModel, string>(
x => x.SomeProperty, ViewData).DisplayName
) %>
<p>
스파게티 코드를 피하기 위해서는 도우미를 쓰는 것이 항상 좋습니다.
public static class HtmlExtensions
{
public static MvcHtmlString GetDisplayName<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression
)
{
var metaData = ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, htmlHelper.ViewData);
string value = metaData.DisplayName ?? (metaData.PropertyName ?? ExpressionHelper.GetExpressionText(expression));
return MvcHtmlString.Create(value);
}
}
그리고 나서:
<p>
<%: Html.GetDisplayName(x => x.SomeProperty) %>
</p>
기존의 새 기능을 사용해 보십시오.
<% Html.DisplayNameFor(m => m.YourProperty) %>
제 생각에는 문자열을 결과 유형으로 사용해야 합니다. 그렇지 않으면 인코딩 메커니즘을 건너뜁니다.또 다른 점은 경우에 따라 DisplayName이 문자열(즉, WebGrid 클래스의 열 채우기)로 필요하다는 것입니다.
언급URL : https://stackoverflow.com/questions/3885796/get-displayname-attribute-without-using-labelfor-helper-in-asp-net-mvc
반응형
'sourcecode' 카테고리의 다른 글
IIS에서 Windows 인증이 웹 응용 프로그램의 옵션 중 하나로 표시되지 않는 이유는 무엇입니까? (0) | 2023.06.13 |
---|---|
JDBC 연결 기본 자동 커밋 동작 (0) | 2023.06.13 |
Cloud Firestore: 동적 키를 사용하여 중첩된 개체의 필드 업데이트 (0) | 2023.06.13 |
dbms_lob.create temporary()의 요점은 무엇입니까? (0) | 2023.06.13 |
RxJS 관찰 가능한 필터에서 정의되지 않음 (0) | 2023.06.13 |