c# - MVC4 表单验证 - 自定义 html 消息 howto?

标签 c# jquery asp.net-mvc validation

好的,伙计们,我正在努力解决这个问题。我在 MVC4 和使用验证插件的 jQuery 中找到了普通表单验证的示例(突出显示文本框并显示红色文本),但是,它们在尝试执行自定义样式的东西时并没有太大帮助。

例如,在 ajax 表单中,当用户提交表单并且参数错误(在帖子后的 Controller 中)时,我想在页面上显示一个自定义 HTML 元素 - 一个包含文本的 div这样我就可以为我的网站适本地设置 div 的样式。

在寻求答案的过程中,我发现了 ModelState.AddModelError() - 如果您只想显示文本而不是 div,这非常好,因为它只是向页面添加了一个我可以设置样式的页面,但是我需要不仅仅是一个出现。

有人有这方面的任何好的演示/示例吗?

我添加了一个简单的示例图像,如果密码不正确,我想在右侧显示消息(html 和 css 的组合):

enter image description here

最佳答案

在您的 View 中,您可以使用 ValidationMessageFor 并添加一些类。要使用它,请确保您使用 AddModelError 指定了正确的属性名称,或者您在类中结合 TryValidateModel()

使用了元数据验证

查看代码:

@Html.ValidationMessageFor(model => model.PropertyX, null, new { @class ="error-propertyx" })

验证模型代码:

[Required(ErrorMessageResourceName = "RequiredField", ErrorMessageResourceType = typeof(ValidationRes))]
public string PropertyX { get; set; }

或者如果你想要更多的东西,你可以使用像下面这样的方法

http://buildstarted.com/2010/09/14/creating-your-own-modelmetadataprovider-to-handle-custom-attributes/

创建一个单独的扩展方法也是一种选择,请注意,这不是最佳代码,但它会做你想做的:)

public static MvcHtmlString CustomValidatioMessageFor<TModel, TProperty>(this HtmlHelper obj, Expression<Func<TModel,TProperty>> expression){

    string html = (string)obj.ValidationMessageFor(expression);
    html = "<div>" + html + "</div>";
    return new MvcHtmlString(html);
}

关于c# - MVC4 表单验证 - 自定义 html 消息 howto?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13362561/

相关文章:

c# - 在 Nuget 的后期构建中获取版本

c# - 有没有办法根据任意 xml 获取 System.Configuration.Configuration 实例?

javascript - 将 ES6 插件扩展到 jQuery 原型(prototype)

c# - .NET MVC 4 - 保持选定对象列表状态的最佳实践

c# - 在Powershell中列出.NET namespace 的类?

c# - 连接一个二维数组

javascript - jquery 的 id.text() 忽略 ie8 中超过 1 个空格

javascript - 用javascript检测Android(不是chrome)?

c# - ASP.NET MVC ActionResult View() 不改变 url

javascript - 如何预填充下拉列表