首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从ASP.NET Core1.0中的ViewModel元数据输入占位符

从ASP.NET Core1.0中的ViewModel元数据输入占位符
EN

Stack Overflow用户
提问于 2016-03-17 16:59:31
回答 2查看 11.8K关注 0票数 19

可以将内置的asp-for标记助手设置为从视图模型中的[Display(Prompt = "This is the placeholder")]属性获取输入占位符。

代码语言:javascript
运行
复制
[Display(Name="Name", Prompt = "This is the placeholder")]        
public string Name { get; set; }

在MVC5中,我可以通过在编辑器模板中添加额外的逻辑并检查ViewData.ModelMetadata.Watermark属性来实现这一点。例如:

代码语言:javascript
运行
复制
@model string
@{
    Dictionary<string, object> htmlAttributes = new Dictionary<string, object>();
    htmlAttributes.Add("class", "form-control");
    if (!string.IsNullOrWhiteSpace(ViewData.ModelMetadata.Watermark))
    {
        htmlAttributes.Add("placeholder", ViewData.ModelMetadata.Watermark);
    }
}
@Html.Label("")
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, htmlAttributes)
@Html.ValidationMessage("", "", new { @class = "text-danger" })

但现在在ASP.NET Core1.0中,我想开始使用新的标记助手方法。默认情况下,build in asp-for帮助器简单地忽略Prompt属性值。

拥有我自己的asp-for属性的自定义实现,例如,my-asp-for是一个选项,很可能我最终会为了可维护性和重用额外的逻辑而使用它。但是Watermark属性不再出现在ModelMetadata中,也就是说,不存在For.Metadata.Watermark这样的东西。

asp-for辅助对象中,我唯一能看到Prompt值的地方是有些隐藏的。

所以我有两个问题。有没有更聪明的方法呢?从视图模型元数据中获取占位符是不是一种糟糕的做法,也就是说,我应该在剃刀文件中显式地指定它?

EN

Stack Overflow用户

发布于 2016-06-18 00:44:52

我刚刚做了一个快速测试,如果我没理解错的话,这对我来说似乎是开箱即用的默认VS模板:

型号:

代码语言:javascript
运行
复制
public class LoginViewModel
{
    [Required]
    [EmailAddress]
    [Display(Name = "Email", Prompt = "example@example.org")]
    public string Email { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

查看代码片段:

代码语言:javascript
运行
复制
<div class="form-group">
    <label asp-for="Email" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <input asp-for="Email" class="form-control" />
        <span asp-validation-for="Email" class="text-danger"></span>
    </div>
</div>

结果:

票数 49
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36055755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档