2010-01-11 81 views

回答

10

我不知道xVal,但就ASP.NET MVC方面而言,如果你看看the source,你会看到有一些静态只读字符串代表这些值。

public static readonly string ValidationInputCssClassName = "input-validation-error"; 
public static readonly string ValidationMessageCssClassName = "field-validation-error"; 
public static readonly string ValidationSummaryCssClassName = "validation-summary-errors"; 

因此,无论你编辑源根据自己的喜好(这也可以解决XVAL)或改变输出的代码以某种方式使用不同的值。

如果xVal使用jQuery验证(我认为它确实...?),您可以将其更改为'errorClass'选项的默认值。 My answer here可以帮助你沿着这条路。

HTHS,
查尔斯

3

这里就是我所做的:

private void ChangeValidationClassNames() 
{ 
    var helper = new HtmlHelper(new ViewContext(), new ViewPage()); 
    SetPublicStaticReadonly("ValidationInputCssClassName", helper, "errInput"); 
    SetPublicStaticReadonly("ValidationMessageCssClassName", helper, "errMsg"); 
} 

public void SetPublicStaticReadonly(string readonlyPropName, object instance, object value) 
{    
    var field = instance.GetType().GetField(readonlyPropName, BindingFlags.Static | BindingFlags.Public); 
    if (field == null) 
     throw new NullReferenceException(string.Format("public static readonly field '{0}' not found in '{1}'", readonlyPropName, instance)); 
    field.SetValue(instance, value); 
} 
+0

@TweetZz:你不需要一个HtmlHelper实例ange静态字段。你可以通过'typeof(HtmlHelper)'得到这个字段,并调用'SetValue(null,value)'。 – 2012-02-07 07:41:21

+0

你们在哪里放置这些代码? – Shimmy 2015-03-29 01:12:18

+0

在ActionFilterAttribute中.. – TweeZz 2015-03-31 10:48:21

1

更清洁的解决方案可能是:

<script type="text/javascript"> 
 
    $(document).ready(function(){ 
 
     $('.input-validation-error').addClass('CustomErrorClass').removeClass('input-validation-error'); 
 
     $('.field-validation-error').addClass('CustomErrorClass').removeClass('field-validation-error'); 
 
    }); 
 
</script>