Joh*_*n S 13 asp.net-mvc html5
我有一个模特:
[DataType(DataType.EmailAddress)]
[DisplayFormat(ConvertEmptyStringToNull = true)]
[Display(Prompt = "Email Address")]
public string Email { get; set; }
Run Code Online (Sandbox Code Playgroud)
我试图让"提示"显示在结果文本框的占位符文本中,其中包含以下内容:
@Html.EditorFor(model => model.Email,
new { htmlAttributes = new { @class = "form-control input-md",
placeholder = @ViewData.ModelMetadata.Watermark } })
Run Code Online (Sandbox Code Playgroud)
当我查看生成的HTML时,我只在输入标记中获得"占位符".根据我所读的ViewData.ModelMetadata.Watermark应该工作.获取此占位符文本的正确方法是什么?
Joh*_*n S 35
这解决了我的问题:
@Html.EditorFor(model => model.Email, new { htmlAttributes =
new { @class = "form-control input-sm",
placeholder = @Html.DisplayNameFor(m=>m.Email) } })
Run Code Online (Sandbox Code Playgroud)
这样做的代码是
placeholder = @Html.DisplayNameFor(m=>m.Email)
Run Code Online (Sandbox Code Playgroud)
小智 6
有点晚了,但如果有人还在寻找它...
@Html.EditorFor(model => model.Email,
new { htmlAttributes = new { @class = "form-control input-md",
@placeholder = "Whatever you want as a placeholder" } })
Run Code Online (Sandbox Code Playgroud)
它完美而干净!
在非模板化控件上下文中获取Prompt值而不是的正确解决方案DisplayName如下:
@Html.EditorFor(model => model.Email,
new { @class = "form-control input-md",
placeholder = ModelMetadata.FromLambdaExpression(m => m.Email, ViewData).Watermark
})
Run Code Online (Sandbox Code Playgroud)
这也将 - 与使用的公认解决方案不同@Html.DisplayNameFor(m=>m.Email)-不会双重转义水印文本,这取决于所显示的文本和语言可能是一个问题。
使用 TextBoxFor:
@Html.TextBoxFor(m => m.Email, new { @class = "form-control", @placeholder = Html.DisplayNameFor(m => m.Email) })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40129 次 |
| 最近记录: |