gpt4 book ai didi

razor - 从 ASP.NET Core 1.0 中的 ViewModel 元数据输入占位符

转载 作者:行者123 更新时间:2023-12-04 01:25:41 29 4
gpt4 key购买 nike

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

[Display(Name="Name", Prompt = "This is the placeholder")]        
public string Name { get; set; }

在 MVC 5 中,我可以通过在我的编辑器模板中添加额外的逻辑并检查 ViewData.ModelMetadata.Watermark 来实现这一点。属性(property)。例如:
@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 Core 1.0 中,我想开始使用新的标签助手方法。默认情况下, asp-for 中的构建助手只是忽略 Prompt属性值。

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

我唯一能看到 Prompt的地方 asp-for 中的值助手有点隐藏。

enter image description here

所以我有两个问题。
有没有更聪明的方法来做到这一点?
从 View 模型元数据中获取占位符是一种不好的做法,即我应该在 Razor 文件中明确指定它吗?

最佳答案

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

模型:

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; }
}

查看片段:
<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>

结果:

enter image description here

关于razor - 从 ASP.NET Core 1.0 中的 ViewModel 元数据输入占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36055755/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com