Asp.net mvc 2 ASP.NET MVC2中的表单验证消息-对错误消息使用图像而不是文本

Asp.net mvc 2 ASP.NET MVC2中的表单验证消息-对错误消息使用图像而不是文本,asp.net-mvc-2,validation,Asp.net Mvc 2,Validation,好的-目前,为了验证我的页面,我在MVC2 C#项目的模型中使用了[Required] 例如,在我的模型中,我有: [DisplayName("Username")] [Required(ErrorMessage = "Please enter a Username")] public string UserName { get; set; } 。。。在我看来,我有 <%=Html.ValidationMessageFor(x => x.UserName, "*")%> x

好的-目前,为了验证我的页面,我在MVC2 C#项目的模型中使用了[Required]

例如,在我的模型中,我有:

[DisplayName("Username")]
[Required(ErrorMessage = "Please enter a Username")]
public string UserName { get; set; }
。。。在我看来,我有

<%=Html.ValidationMessageFor(x => x.UserName, "*")%>
x.UserName,“*”>
但这和我们网站其他部分的样式和错误捕获不一致,这些都是用经典ASP编写的

如果可能的话,我希望能够在下图中重新创建验证样式

因此,在加载页面(而不是提交页面)时,我们可能会看到类似的显示,alt和M图标的标题显示“请输入用户名”:

然后如果我们尝试提交缺少的值-我们会看到

再次将鼠标悬停在红色x上将显示错误消息

是否有一种直接的方式来实现这种验证风格,如果是的话,最好的方式是什么


感谢您提供的任何有用的提示、提示和建议:

您应该可以通过创建自己的
HtmlHelper
扩展方法来实现这一点

例如

请看一下,以了解如何为其编写一些重载

HTHs,

Charles

这是完全未经测试的(因此评论),但是您是否尝试过在字符串变量中添加
标记?(当然要确保不要对那些字符串进行HtmlEncode)我试过那种摇滚乐-不起作用。。。不仅如此,我还想在提交页面之前显示必填字段。嗨,Charlino,这是一个很好的答案,应该可以解决部分问题-但是提到的部分我想在提交表单之前显示必填字段,蓝色M。。。有没有办法从模型中的[required]字段获取该信息。。。我只是想知道最好的方法。非常感谢你的回答。
public static string ValidationImage(this HtmlHelper htmlHelper, string modelName)
{
    if (modelName == null)
    {
        throw new ArgumentNullException("modelName");
    }

    if (!htmlHelper.ViewData.ModelState.ContainsKey(modelName))
    {
        return null;
    }

    ModelState modelState = htmlHelper.ViewData.ModelState[modelName];
    ModelErrorCollection modelErrors = (modelState == null) ? null : modelState.Errors;
    ModelError modelError = ((modelErrors == null) || (modelErrors.Count == 0)) ? null : modelErrors[0];

    if (modelError == null)
    {
        return null;
    }

    string messageText = GetUserErrorMessageOrDefault(htmlHelper.ViewContext.HttpContext, modelError, modelState);

    TagBuilder builder = new TagBuilder("img");
    builder.MergeAttribute("src", "urlToYourCrossImage");
    builder.MergeAttribute("class", HtmlHelper.ValidationMessageCssClassName); //Or your own custom class for the img tag here
    builder.MergeAttribute("alt", messageText);
    builder.MergeAttribute("title", messageText);

    return builder.ToString(TagRenderMode.SelfClosing);
}