c# - 我可以让 mvc 模型验证对不同的编辑器使用不同的错误 css 样式吗?

标签 c# css asp.net-mvc-3 validation razor

当我们使用 mvc 模型验证引擎时,它会自动将 Site.css 中的某些 css 类添加到编辑器中,这些类由 HTML 辅助方法生成;即,其中一个用于特定对象:

.field-validation-error
{
    color: #ff0000;
}

.field-validation-valid
{
    display: none;
}

.input-validation-error
{
    border: 1px solid #ff0000;
    background-color: #ffeeee;
}

.validation-summary-errors
{
    font-weight: bold;
    color: #ff0000;
}

.validation-summary-valid
{
    display: none;
}

我们当然可以编辑这些样式以应用所需的样式。

但是是否有机会告诉模型验证引擎,根据任何用户要求使用什么确切的样式,以便我们可以在一个页面上使用不同的字段、不同的样式?

编辑

假设我们有以下 View :

@model ModelValidation.Models.Appointment
@{
    ViewBag.Title = "Make a Booking";
}
<h2>
    Book an Appointment</h2>
@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <p>
        @Html.LabelFor(m => m.ClientName, "Your name: ") @Html.EditorFor(m => m.ClientName)
        @Html.ValidationMessageFor(m => m.ClientName)
    </p>        
    <p>
        @Html.LabelFor(m => m.Date, "Appointment Date: ") @Html.EditorFor(m => m.Date)
        @Html.ValidationMessageFor(m => m.Date)
    </p>
    <p>
        @Html.EditorFor(m => m.TermsAccepted) @Html.LabelFor(m => m.TermsAccepted, "I accept the terms & conditions")
        @Html.ValidationMessageFor(m => m.TermsAccepted, null, new { @class = "other-input-validation-error" })
    </p>
    <input type="submit" value="Make Booking" />
}

通过 @Html.ValidationMessageFor 重载,我们可以指定 css 类来设置错误消息的样式。但是我们如何为编辑器指定 css 类呢?

最佳答案

我确实在不耐烦地等待其他答案,但在此之前,这就是我想出的。

Html.TextBoxForHtml.PasswordFor 等具体的辅助方法有一个必要的重载。所以下面的例子显示了我想要的:

@using (Html.BeginForm())
{
    <p>
        @{ModelState state = ViewData.ModelState["ClientName"];            
        }
        @Html.LabelFor(m => m.ClientName, "Your name: ")
        @if (state != null && state.Errors.Count > 0)
        {
            @Html.TextBoxFor(m => m.ClientName, new { @class = "other-input-validation-error" })
        }
        else
        {
            @Html.EditorFor(m => m.ClientName)
        }
        @Html.ValidationMessageFor(m => m.ClientName)
    </p>        
}

但我仍然对如何做到这一点的任何其他想法持开放态度。总的来说,我对 asp 很陌生,可能很容易错过(根本不知道)该技术的一些不错的功能。

编辑

正如 Sanderson S. Freeman A. - Pro ASP.NET MVC 3 Framework Third Edition 中所述

We can’t use the templated helpers to generate an editor for a property if we also want to provide additional attributes, so we have used the Html.TextBoxFor helper instead and used the version that accepts an anonymous type to use for HTML attributes.

关于c# - 我可以让 mvc 模型验证对不同的编辑器使用不同的错误 css 样式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12191475/

相关文章:

c# - 在 C# 中检查字符串中的字母数字字符

html - float Logo 与顶部菜单对齐

javascript - jQuery 选择器优化

html - 如何将元素放入输入字段?

asp.net-mvc-3 - 在 ASP.NET-MVC3 中缓存数据有什么变化吗?

javascript - 奇怪的 javascript/jquery 问题

c# - DataGridViewCheckboxCell 的背景色

c# - 在 EXTJs 网格面板中使用 JSON 日期

c# - 我应该在 ServiceController 上调用 Close() 吗?

asp.net-mvc-3 - 使用来自服务器的默认数据初始化 View 模型