我有以下MVC 5 Razor HTML助手:
@Html.TextBoxFor(m => m.ShortName,new { @class = "form-control",@placeholder = "short name"})
我需要这个字段是必需的(即当用户导航而不放置价值旅馆时,有一个红色的轮廓)。在WebForms HTML 5中,我只能说< input type =“text”required />有这个效果。
使用Razor语法完成此功能的正确语法是什么?
解决方法
如果需要,您可以使用所需的html属性:
@Html.TextBoxFor(m => m.ShortName,placeholder = "short name",required="required"})
或者您可以使用.Net中的RequiredAttribute类。使用jQuery,RequiredAttribute可以在前端和服务器端进行验证。如果你想去MVC路线,我建议你阅读Data annotations MVC3 Required attribute。
要么
你可以得到真正的进步:
@{ // if you aren't using UnobtrusiveValidation,don't pass anything to this constructor var attributes = new Dictionary<string,object>( Html.GetUnobtrusiveValidationAttributes(ViewData.TemplateInfo.HtmlFieldPrefix)); attributes.Add("class","form-control"); attributes.Add("placeholder","short name"); if (ViewData.ModelMetadata.ContainerType .GetProperty(ViewData.ModelMetadata.PropertyName) .GetCustomAttributes(typeof(RequiredAttribute),true) .Select(a => a as RequiredAttribute) .Any(a => a != null)) { attributes.Add("required","required"); } @Html.TextBoxFor(m => m.ShortName,attributes) }
或者如果您需要多个编辑器模板:
public static class ViewPageExtensions { public static IDictionary<string,object> GetAttributes(this ViewWebPage instance) { // if you aren't using UnobtrusiveValidation,don't pass anything to this constructor var attributes = new Dictionary<string,object>( instance.Html.GetUnobtrusiveValidationAttributes( instance.ViewData.TemplateInfo.HtmlFieldPrefix)); if (ViewData.ModelMetadata.ContainerType .GetProperty(ViewData.ModelMetadata.PropertyName) .GetCustomAttributes(typeof(RequiredAttribute),true) .Select(a => a as RequiredAttribute) .Any(a => a != null)) { attributes.Add("required","required"); } } }
那么在你的模板中
@{ // if you aren't using UnobtrusiveValidation,don't pass anything to this constructor var attributes = this.GetAttributes(); attributes.Add("class","form-control"); attributes.Add("placeholder","short name"); @Html.TextBoxFor(m => m.ShortName,attributes) }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。