检查是一种特殊形式的字段有效

编程入门 行业动态 更新时间:2024-10-24 23:26:16
本文介绍了检查是一种特殊形式的字段有效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我一直在寻找了一段时间,并没有找到一个解决办法。

我是一个ASP.NET和MVC4 / Razor2新手,所以我主要是编辑默认的项目。

不管怎样,我的问题是,我使用Twitter的引导,我需要添加一个错误在CSS类 DIV 如果下铺设领域是无效的。

到目前为止,我有这样的:

< D​​IV CLASS =控制组错误>      @ Html.LabelFor(M = GT; m.Password,新{@class =控制标签})      < D​​IV CLASS =控制>        @ Html.PasswordFor(M = GT; m.Password)        @ Html.ValidationMessageFor(M = GT; m.Password,空,新的{@class =直列帮助错误})      < / DIV>    < / DIV>

我应该怎么做才能让剃刀插入错误类中的第一个 DIV 我的片段时,现场是无效的。

更新:我找到了一种方法来做到这一点,但它并不相较于code其余觉得不对劲。有没有更好的办法或者是它的的的方式做到这一点?

< D​​IV CLASS =控制组@(!(ViewData.ModelState.IsValidField(密码))?错误:),>

解决方案

这样的:

公共静态类HtmlHelperExtensions{    公共静态MvcHtmlString AddClassIfPropertyInError<的TModel,TProperty>(        这与的HtmlHelper LT;的TModel>的HtmlHelper,        防爆pression<&Func键LT;的TModel,TProperty>>前pression,        串errorClassName)    {        VAR前pressionText =前pressionHelper.GetEx pressionText(如pression);        VAR fullHtmlFieldName = htmlHelper.ViewContext.ViewData            .TemplateInfo.GetFullHtmlFieldName(如pressionText);        VAR状态= htmlHelper.ViewData.ModelState [fullHtmlFieldName]        如果(状态== NULL)        {            返回MvcHtmlString.Empty;        }        如果(state.Errors.Count == 0)        {            返回MvcHtmlString.Empty;        }        返回新MvcHtmlString(errorClassName);    }}

然后在您的视图:

< D​​IV CLASS =控制组@ Html.AddClassIfPropertyInError(X => x.Email,错误)>    <标签类=控制标签>电子邮件和LT; /标签>    < D​​IV CLASS =控制>        <输入类型=文本占位符=电子邮件NAME =电子邮件/>        <跨度类=求助在线> @ Html.ValidationMessageFor(X => x.Email)LT; / SPAN>    < / DIV>< / DIV>

I've been searching for a while now and haven't found a solution yet.

I'm an ASP.NET and MVC4/Razor2 newbie, so I'm mostly editing the default project.

Anyway, my issue is that I'm using Twitter Bootstrap and I need to add an error CSS class on a div if the under-laying field is not valid.

So far I have this:

<div class="control-group error"> @Html.LabelFor(m => m.Password, new { @class = "control-label" }) <div class="controls"> @Html.PasswordFor(m => m.Password) @Html.ValidationMessageFor(m => m.Password, null, new { @class = "inline-help error" }) </div> </div>

What should I do to make Razor insert the error class in the first div of my snippet when the field is invalid.

UPDATE: I found a way to do it, but it doesn't feel right in comparison to the rest of the code. Is there a better way or is it the way to do it?

<div class="control-group@((!ViewData.ModelState.IsValidField("Password")) ? " error" : "")">

解决方案

Like this:

public static class HtmlHelperExtensions { public static MvcHtmlString AddClassIfPropertyInError<TModel, TProperty>( this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string errorClassName) { var expressionText = ExpressionHelper.GetExpressionText(expression); var fullHtmlFieldName = htmlHelper.ViewContext.ViewData .TemplateInfo.GetFullHtmlFieldName(expressionText); var state = htmlHelper.ViewData.ModelState[fullHtmlFieldName]; if (state == null) { return MvcHtmlString.Empty; } if (state.Errors.Count == 0) { return MvcHtmlString.Empty; } return new MvcHtmlString(errorClassName); } }

Then in your view:

<div class="control-group @Html.AddClassIfPropertyInError(x => x.Email, "error")"> <label class="control-label">Email</label> <div class="controls"> <input type="text" placeholder="Email" name="Email" /> <span class="help-inline">@Html.ValidationMessageFor(x => x.Email)</span> </div> </div>

更多推荐

检查是一种特殊形式的字段有效

本文发布于:2023-11-30 20:27:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1651382.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:是一种   字段   形式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!