如何为DisplayFor()创建MVC Razor模板
||
我的视图模型中有几个仅显示的属性,但是我需要使用jQuery检索它们的值以在页面上执行计算。标准的Html.DisplayFor()方法只是将其值写入页面。我想创建一个剃刀模板,使我可以将每个元素呈现为:
<span id=\"ElementsId\">Element\'s value</span>
我知道我可以在Html.DisplayFor()中指定一个模板以使用特定的模板来呈现属性,但是如何在该模板内标识要写入span标签的id属性?
@Html.DisplayFor(model => model.Element, \"MyTemplate\");
没有找到相关结果
已邀请:
6 个回复
车料
这使用属性的名称作为id属性和属性的值作为内容来呈现正确的标记:
在视图文件中,可以使用以下命令进行调用:
或者,如果模型属性用UIHint(\“ Reading \”)装饰,则可以将模板名称保留在对DisplayFor()的调用之外,并且仍将使用该模板进行呈现:
这与自定义编辑器模板应该同样有效。
翁茄口霉氖
念炯
模板的SO帖子,但我不清楚它们。您的问题很接近这个问题,在掌握了这个问题之后,我决定添加一个新的答案,其中包括实现该问题的所有步骤。这可能对其他人有帮助。 1.创建模板 首先,您需要在下面的路径中添加ѭ9(该路径非常重要):
例如,我创建了一个名为
的
并按以下方式填充它:
2.将UIHint添加到模型 要在
和
之间建立连接,应在模型类中添加如下所示的
属性:
3.在视图中使用@ Html.DisplayNameFor 在需要此属性的每个视图中,可以使用以下代码:
输出量 在我的示例(
)中,以上代码呈现为以下代码:
设定属性 要设置
或其他html属性,您可以使用ModelMetadata,如下所示:
具有属性的输出
先对冈蒲
(显示+编辑器)以及
属性。
仿普
这使用一个名为StringDisplaySetHtmlID的自定义模板,最后一个参数将一个键值对添加到Viewbag。 我的模板文件如下所示:
我还在这里设置一个类以供样式使用。为了避免潜在的常见命名冲突,我使用了键名HtmlID而不是ID。 现在,在我的JavaScript中,我可以使用以下jquery来获取span \的内容:
懊毁暗
会是这样的:
当首次发布此问题时,这些助手可能并不存在,但这是基于David的回答的两种方式: 使用
代替
仍将在渲染值时使用数据注释,而不仅仅是在其上运行
。 在嵌套或重复模型且ID不能简单地用作属性名称的情况下,最好使用
而不是
。