[英]How to change formatting of Html.DisplayFor for a user-defined class in MVC
我的主要模型Project有一個叫做“ProjectAddress”的屬性,它的類型是“Address” - 我定義的一個類。 地址具有屬性Line1,Line2,City,State和ZipCode。 當我使用@Html.DisplayFor(model => model.ProjectAddress)
,它顯示為:
Line 1
<Line1 value here>
Line 2
<Line2 value here>
City
<City value here>
...
等等。 我希望它顯示為:
<Line 1>
<Line 2 if defined>
<City>, <State>, <ZipCode>
<County> County
沒有每個值上面的屬性標題。 每次我想通過硬編碼顯示地址時,我都可以手動執行此操作
@Html.DisplayFor(model => model.ProjectAddress.Line1)
@if (!String.IsEmptyOrNull(model.ProjectAddress.Line2))
{
@Html.DisplayFor(model => model.ProjectAddress.Line2)
}
@Html.DisplayFor(model => model.ProjectAddress.City), @Html.DisplayFor(model => model.ProjectAddress.State), @Html.DisplayFor(model => model.ProjectAddress.ZipCode)
但這非常繁瑣,如果我因為某種原因改變地址類的格式,我將不得不通過我的代碼並更改每個實例。 有沒有辦法可以將@Html.DisplayFor(model => model.ProjectAddress)
的格式更改為上面的代碼塊?
您需要添加自定義顯示模板。 添加文件Views\\Shared\\DisplayTemplates\\Address.cshtml
,並將以下代碼放入:
@model Namespace.To.Address
@Html.DisplayFor(m => m.Line1)
@if (!String.IsEmptyOrNull(Model.Line2))
{
@Html.DisplayFor(m => m.Line2)
}
@Html.DisplayFor(m => m.City), @Html.DisplayFor(m => m.State),
@Html.DisplayFor(m => m.ZipCode)
然后,您可以在視圖中嘗試使用DisplayFor
:
@Html.DisplayFor(m => m.ProjectAddress)
Razor將使用您定義的模板來呈現ProjectAddress
實例。
查看名為“顯示模板”的內容。 缺點是這個......
views/shared
下創建一個名為'DisplayTemplates`的新文件夾(您也可以使用編輯器模板)。 Address.cshtml
的新cshtml文件。 將其模型設置為My.LongNamespace.Address
@model My.LongNamespace.Address
@Html.DisplayFor(model => model.Line1)
@if (!String.IsEmptyOrNull(model.Line2))
{
@Html.DisplayFor(model => model.Line2)
}
@Html.DisplayFor(model => model.City),
@Html.DisplayFor(model => model.State),
@Html.DisplayFor(model => model.ZipCode)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.