我創建了以下自定義ValidationAttribute:如何檢索自定義C#資源類常量的字符串值?
public class DateRangeAttribute : ValidationAttribute, IClientValidatable {
public DateTime MinimumDate = new DateTime(1901, 1, 1);
public DateTime MaximumDate = new DateTime(2099, 12, 31);
public DateRangeAttribute(string minDate, string maxDate, string errorMessage) {
MinimumDate = DateTime.Parse(minDate);
MaximumDate = DateTime.Parse(maxDate);
ErrorMessage = string.Format(errorMessage, MinimumDate.ToString("MM/dd/yyyy"), MaximumDate.ToString("MM/dd/yyyy"));
}
}
,我想在我的MVC4視圖模型使用如下:
[DateRange(Resources.MinimumDate, Resources.MaximumDate, "Please enter a date between {0} and {1}")]
資源是基於一組生成的資源類的存儲在SQL數據庫中的選項。生成的代碼,爲上述兩個資源屬性的簡化版本如下:
public class Resources {
public const string MinimumDate = "PropMinimumDate";
public static string PropMinimumDate
{
get { return "12/15/2010" }
}
public const string MaximumDate = "PropMaximumDate";
public static string PropMaximumDate
{
get { return "12/15/2012" }
}
}
雖然我不明白它是如何工作的,我不明白,在ValidationAttributes資源的典型用法將Resources.MinimumDate自動映射到PropMinimumDate並返回值「12/15/2010」。
我無法弄清楚如何自己手動進行編程跳躍,因此我可以將兩個日期值傳遞到我的自定義ValidatorAttribute中。如目前所編碼的,「PropMinimumDate」和「PropMaximumDate」是的minDate和的maxDate參數(分別)的值傳遞到DateRangeAttribute的構造函數。
如果我嘗試
[DateRange(Resources.PropMinimumDate, Resources.PropMaximumDate, "Please enter a date between {0} and {1}")]
我收到編譯錯誤:
的屬性參數必須是常量表達式的typeof屬性參數類型的表達或數組創建表達式
有沒有辦法完成這個任務,或者我試圖做不成?
真棒!這有助於解釋標準驗證屬性如何工作!非常感謝!! – CrazyWebDeveloper