我正在努力解决以下问题,但找不到可接受的解决方法。
我的挑战:在 Razor 视图中的实际属性值之前写出 HTML 注释。
这是我的(简化的)视图模型:
public class Article
{
public string Title {get;set;}
}
要写出这个标题,我只需在我的 Razor 视图中执行此操作:
<h2>@Model.Title</h2>
现在我想在实际标题之前写一个 html 注释,所以生成的 HTML 看起来像这样(简化):
<h2><!-- some parameters for a 3th party system --> This is my title</h2>
HTML 注释来自我应用于“标题”属性的属性。它的值是生成的,因此属性值是在运行时使用 .NET 框架中的 TypeDescriptor 添加的。
现在我知道我可以通过简单地使用 HTML 帮助程序写出我的所有属性来实现这一点。像这样:@MyHelper.Write(m => m.Title)
但是由于可能我的所有属性都需要这个 HTML 注释,所以我想避免使用 HTML 帮助程序,因为它会使视图变得混乱并且不会使视图看起来更好并且(更多)可读。
这是我尝试过的:
- 创建了一个自定义 Razor 基本页面(继承自
WebViewPage<TModel>
)。并覆盖它的“写”方法。
这种工作,但这里最大的问题是我不知道当时写出了哪个属性。无法在“Write”方法中获取当前属性名称。因此,现在我动态搜索我的模型以查找具有已写出值的属性,并在属性中添加 HTML 注释。
我的问题:是否有另一种方法来完成我想要的。如前所述:我想避免使用 HTML 助手来写出我的所有属性。(想想循环等。这不是很好)。
此外,在我的控制器中添加此 HTML 注释不是选项,因为:
- 它不是实际价值的一部分。是一种元数据。
- HTML 注释应添加到
int
's、double's 和DateTime
's。无法调整 double 属性以包含字符串。(图片 aList<DateTime>
。所有日期都需要此 HTML 注释) - 应根据 web.config 设置添加 HTML 注释。是或否。(每个属性值的实际 HTML 注释都不同)
我意识到这个问题相当长。对此感到抱歉。任何想法表示赞赏。