【发布时间】:2017-10-30 14:59:58
【问题描述】:
我有一个输入文本字段,我希望能够在用户编辑文本后恢复初始值。
所以,我会说添加一个data-{something} 属性,例如data-init,它将保存初始值,以便以后可以恢复。
结果应如下所示:
<input type="text" val="Some value..." data-init="Some value..." />
现在,我知道我可以通过以下方式实现:
@Html.TextBoxFor(m => m.InputText , new { data_init = Model.InputText })
但这很糟糕,而且我有很多具有这种行为的输入字段。
另外,我无法创建自定义 HtmlHelper,因为我有很多具有这种行为的输入类型,如果我这样做会很混乱......
所以,我认为实际的解决方案应该是使用Data Annotations。
public class ExampleVM
{
[HoldInitialValue]
public string InputText { get; set; }
}
[HoldInitialValue] 属性将负责将data-init="{value}" 添加到输入标签。 {value} 将从属性的值中获取,还可以选择覆盖它。
那么,我该如何实现这种行为呢?
感谢帮助。
【问题讨论】:
-
通过编写自定义 HtmlHelper。你知道怎么做吗?
-
@IvayloStoev - 是的,我知道,我拒绝了 HtmlHelper 解决方案,因为我有很多具有这种行为的输入类型,如果我这样做会很混乱......
-
如果您想使用这样的数据注释,则必须有人对其进行评估。这通常是一个助手。我没有看到任何其他有意义的扩展点。另一种选择(不是真正的 MVC 方式)是从客户端执行此操作,并在第一次渲染 html 元素时添加初始值,方法是使用一些 javascript 代码并基于例如一些常见的 css 类。
标签: asp.net-mvc asp.net-mvc-5 metadata data-annotations