我正在使用DataAnnotations创建一个日期范围验证器,jQuery.validate和jquery.validate.unobtrusive.我已经阅读了以下内容:http: //bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html
和其他但不能发布(noob)
以及SO上的大部分帖子.我正在把头靠在墙上,任何帮助都可以用啤酒/食物/代码/等奖励;)无论如何这里是代码:
我有一个带有以下参数的模型对象:
[Display(Name = "Start date"),
DayRange(0, 5, ErrorMessage = "The Start Date must be between today and 5 days time.")]
public DateTime StartDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
DayRange是一个自定义属性类:
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class DayRangeAttribute : RangeAttribute, IClientValidatable
{
private int _minimumDays;
private int _maximumDays;
public DayRangeAttribute(int minimumDays, int maximumDays) : base(minimumDays, maximumDays)
{
_minimumDays = minimumDays;
_maximumDays = maximumDays;
}
public override bool IsValid(object value)
{
var …Run Code Online (Sandbox Code Playgroud) 我有一个现有的基类型,我想将它作为字符串的类型名称转换为派生类型,所以像这样:
public void DoStuffInDerivedType(string derivedName) {
(base as Type.GetType(derivedName)).DoThisThing();
}
Run Code Online (Sandbox Code Playgroud)
我很确定这不可能做到,但肯定会很高兴知道.谢谢
编辑:我知道我可以使用类型名称的反射构造对象,但我想使用现有的对象
我想知道Enumerable.Range使用foreach循环的性能开销是什么。例如:
var stringArray = Enumerable.Range(0, 4).Select(i => string.Empty).ToArray();
Run Code Online (Sandbox Code Playgroud)
对比。
var stringArray = new string[4];
for (int i = 0; i < formatted.Length; i++)
{
stringArray[i] = string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
我发现了这些问题:
但是我担心Select最后我可能会实际上循环两次。但是,我喜欢使用该Range选项的优雅。
.net ×2
c# ×2
casting ×1
enumerable ×1
for-loop ×1
performance ×1
reflection ×1
unobtrusive ×1