2010-01-11 82 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>