簡體   English   中英

Display屬性中的ShortName(DataAnnotations)

[英]ShortName in the Display attribute (DataAnnotations)

Name屬性正常工作,但ShortName不起作用。

[Display(Name = "Date of the transfer the task", ShortName = "Trans date")]
public DateTime TransferDate { get; set; }

即使我刪除了Name屬性,也會忽略ShortName(列標題中會顯示“TransferDate”)。

在視圖中我這樣做:

@Html.DisplayNameFor(model => model.TransferDate)

如果您查看Display屬性上的ShortName屬性的描述,您將看到它具有非常有限的開箱即用范圍:

短名稱描述

當然,這並不限制您在模型元數據上利用該值,但沒有任何本地幫助程序可以這樣做。

從MVC 2開始ModelMetadata提供了兩種訪問底層數據的方法: FromStringExpressionFromLambdaExpression ,因此您不需要在編寫自己的幫助程序或擴展方法時從頭開始。

如果你不喜歡編寫HTML幫助器方法,你可以全部內聯:

@ModelMetadata.FromLambdaExpression<RegisterModel, string>( 
            model => model.TransferDate, ViewData).ShortDisplayName} )  

但是,為訪問的一致性,代碼的重復數據刪除和改進的錯誤處理添加擴展方法也是完全有效的

public static class MvcHtmlHelpers
{
   public static MvcHtmlString ShortNameFor<TModel, TValue>(this HtmlHelper<TModel> self, 
           Expression<Func<TModel, TValue>> expression)
   {
       var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData);
       var name = metadata.ShortDisplayName ?? metadata.DisplayName ?? metadata.PropertyName;

       return MvcHtmlString.Create(string.Format(@"<span>{0}</span>", name));
   }
}

然后像任何其他幫助方法一樣使用:

@Html.ShortNameFor(model => model.TransferDate)

進一步閱讀

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM