razor - Input placeholder from ViewModel metadata in ASP.NET Core 1.0 -
is possible set built-in asp-for
tag helper take input placeholder [display(prompt = "this placeholder")]
attribute in view model.
[display(name="name", prompt = "this placeholder")] public string name { get; set; }
in mvc 5 able achieve adding additional logic in editor templates , checking viewdata.modelmetadata.watermark
property. example:
@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" })
but in asp.net core 1.0 start using new tag helpers approach. default, build in asp-for
helper ignores prompt
attribute value.
having own custom implementation of asp-for
attribute, e.g. my-asp-for
option , end having sake of maintainability , reusing additional logic. watermark
property no longer present in modelmetadata
, i.e. there no such thing for.metadata.watermark
.
the place can see prompt
value in asp-for
helper hidden.
so have 2 questions. there smarter way ? bad practice take placeholder viewmodel metadata, i.e. should explicitly specify it in razor file ?
i have done quick test , if understand correctly, appears work out of box me default vs template:
model:
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; } }
view snippet:
<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>
result:
Comments
Post a Comment