我阅读了许多关于@Html.DisplayFor
为布尔属性定义模板的 SO 帖子,但我无法清楚地理解它们。你的问题已经结束了,在掌握了它之后,我决定添加一个新的答案,包括实现它所需的所有步骤。它可能对其他人有帮助。
1. 创建模板
首先需要Partial View
在下面添加一个in路径(路径很重要):
Views/Shared/DisplayTemplates/
例如,我创建了一个Partial View
命名_ElementTemplate
并像这样填充它:
<span>
@(@Model ? "Yes" : "No")
</span>
2.在模型中添加UIHint
property
要在您的和之间建立连接template
,您应该UIHint
在模型类中添加如下属性:
[UIHint("_YesOrNoTemplate")]
public bool MyProperty { get; set; }
3.在视图中使用@Html.DisplayNameFor
在您需要此属性的每个视图中,您可以使用以下代码:
<div>
@Html.DisplayFor(modelItem => item.MyProperty)
</div>
输出
上面的代码在我的示例 ( if (MyProperty == true)
) 中呈现为下面的代码:
<div>
<span>
Yes
</span>
</div>
设置属性
对于设置id
或其他 html 属性,您可以像这样使用ModelMetadata:
<span id="@ViewData.ModelMetadata.PropertyName">
@(@Model ? "Yes" : "No")
</span>
带属性的输出
<div id="MyProperty">
<span>
Yes
</span>
</div>