如何将模型中的占位符文本添加到MVC视图中?

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)

它完美而干净!


mar*_*pet 5

在非模板化控件上下文中获取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)-不会双重转义水印文本,这取决于所显示的文本和语言可能是一个问题。


Sha*_*han 5

使用 TextBoxFor:

@Html.TextBoxFor(m => m.Email, new { @class = "form-control", @placeholder = Html.DisplayNameFor(m => m.Email) })
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

40129 次

最近记录:

8 年,8 月 前