小编Cra*_*art的帖子

使用DataAnnotationsModelValidatorProvider.RegisterAdapter的MVC 2与MVC 3自定义验证属性

我读了一些帖子,但现在无法找到它,在MVC 3中,并不是真的需要创建一个Validator,只有Attribute.这是真的?我确实说我发现该属性上有IClientValidatable令人困惑.那么,如果注释具有客户端脚本名称(IClientValidatable),那么DataAnnotationsModelValidator类会做什么,以及验证(ValidationAttribute IsValid)的能力?

如果我不必在全局中使用Validator注册Attribute,那将是非常好的.可以这样做吗?我读过一些不好的建议了吗?

编辑:有趣的是我只是通过排除验证器来测试它,将所有逻辑放在IsValid中并且它工作得很好.我想唯一可能缺少的是控制器上下文,但我不确定它在验证中是否有用.如果我需要服务,IsValid有ValidationContext,它有ServiceContainer.我没有在这里找到任何真正的劣势?

编辑2:我将从这个例子中的验证器开始:http://blogs.msdn.com/b/simonince/archive/2010/06/04/conditional-validation-in-mvc.aspx

属性:

public class RequiredIfAttribute : ValidationAttribute, IClientValidatable
{
    private RequiredAttribute innerAttribute = new RequiredAttribute();
    public string DependentProperty { get; set; }
    public object TargetValue { get; set; }

    public RequiredIfAttribute(string dependentProperty, object targetValue)
    {
        this.DependentProperty = dependentProperty;
        this.TargetValue = targetValue;
    }

    public override bool IsValid(object value)
    {
        return innerAttribute.IsValid(value);
    }

    public System.Collections.Generic.IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        ModelClientValidationRule modelClientValidationRule = new ModelClientValidationRule()
        {
            ErrorMessage = FormatErrorMessage(metadata.DisplayName),
            ValidationType = "requiredifattribute"
        };
        modelClientValidationRule.ValidationParameters.Add("requiredifattribute", …
Run Code Online (Sandbox Code Playgroud)

validation asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

14
推荐指数
1
解决办法
7673
查看次数

为什么在IWindsorContainer上使用IKernel?

我在几个代码示例中看到人们使用IKernel而不是使用IWindsorContainer.为什么是这样?

这是一个例子:http://docs.castleproject.org/(S(kwaa14uzdj55gv55dzgf0vui))/ Windsor.Windsor-tutorial-part-two-plugging-Windsor-in.ashx

在上面的例子中,它来咬我,因为我添加了一个subresolver

Container.Kernel.Resolver.AddSubResolver(
        new CollectionResolver(Container.Kernel, true));
Run Code Online (Sandbox Code Playgroud)

这将允许我注入集合......但它没有工作.我发现,因为IKernel正在使用它不能使用温莎的全部功能.为什么有人想要在整个容器上使用内核?我想如果您打算实施Windsor,请使用完整的容器.我错了吗?为什么?

c# dependency-injection castle-windsor ioc-container

14
推荐指数
1
解决办法
2535
查看次数

MVC 3采用Razor最佳实践

我正在寻找使用Razor和MVC 3的最佳实践.现在我希望的是某种类型的文章,而不仅仅是您自称的最佳实践列表,但如果您有任何发布它们的话.

为什么这个值得?似乎很难找到关于如何最好地使用Razor和MVC视图的信息.我知道典型的MVC最佳实践,我正在寻找特定的Razor.那些使用Razor的人知道它不仅仅是一个代币替代者.我想了解更多关于如何使用Razor设置网站模板的信息.

就像我说的那样,我正在寻找关于这个主题的好资源.

asp.net-mvc razor asp.net-mvc-3

5
推荐指数
1
解决办法
1万
查看次数

Razor Method Chaining/Fluent不适用于换行符

让我们说我在剃须刀中有一些流利的语法,如下所示:

@Model.ListOfStuff.Where(x=>x.StuffProp == "Some Stuff").FirstOrDefault().SomeOtherProp
Run Code Online (Sandbox Code Playgroud)

但是我们可以说这实际上很长,因为它是构建复杂网格的助手.如果它全部在一条线上它工作正常,但当它在多条线上时它会分开.我怎样才能解决这个问题?

@Model.ListOfStuff.Where(x=>x.StuffProp == "Some Stuff")
.FirstOrDefault().SomeOtherProp
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc razor asp.net-mvc-3

4
推荐指数
1
解决办法
786
查看次数

Spring .Net配置流畅

我需要在项目中使用Spring .Net并且正在探索配置选项.我能找到关于Spring .Net配置的所有内容都是配置文件.Spring是否支持代码配置?我曾经使用过Castle和Ninject,而且两者似乎都是本土的.我发现了声称会增加支持的项目,但我不想要一些会在6个月内死掉的项目.我发现博客中的引用似乎表明Spring支持这一点,但我找不到任何文档!

第2部分可能会推荐Spring .Net而不是Windsor知道它不能支持流畅的配置吗?我知道两者都是很棒的IoC容器,但是我已经处理过具有Spring配置的大量配置文件的项目,我讨厌它.

dependency-injection spring.net ioc-container

3
推荐指数
2
解决办法
3029
查看次数

如何自动调整DockPanel中的TabControl大小 - WPF

我有一个简单的WPF Forms应用程序.我有一个DockPanel作为我的根面板.第一个子节点是StackPanel,其中包含一些控件,然后第二个控件是TabControl.我想要的,面板类型可以改变他们想要的只是TabControl保持窗口的填充大小,除了第一个StackPanel消耗的内容.然而无论我尝试什么,TabControl似乎都会改变它的大小,这取决于它里面的内容,而不是内部的内容.

<Window>
    <DockPanel>
        <StackPanel> </StackPanel>
        <TabControl> </TabControl>
    </DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

.net c# wpf wpf-controls

2
推荐指数
1
解决办法
1万
查看次数

在foreach中设置var的值 - Razor View Engine

我希望/怀疑这很容易,所以如果是的话,我会在这里问一个傻瓜.

在我看来,我有一个foreach循环,请注意,这是一个Razor视图.我不知道ASP.NET View引擎是否也这样做......但它可能会.我想在每个循环上翻转一个bool,但它看不到让我.视图引擎窒息死亡.为什么?我该如何解决?我做了一个for循环,我现在做了mod 2,但我真的需要理解这一点.

这是我试过的:

@{
    var IsOdd = false;
}
@foreach(var foo in bar)
{
    @{ IsOdd = !IsOdd; }
    <div class="@(IsOdd ? "odd" : "even")">@foo</div>
}
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc

1
推荐指数
1
解决办法
7237
查看次数

在循环属性时无法评估IList的类型

我有一个属性的类.我们将调用此TestMeCommand(见下文).这个类有一个列表.我需要做的是遍历类的属性,并识别List.现在必须一般地构建它,因为它的验证代码,所以这个相同的代码可能需要识别a List<int>或a List<string>或其他东西.

public class TestMeCommand
{
    [Range(1, Int32.MaxValue)]
    public int TheInt { get; set; }

    [Required]
    [StringLength(50)]
    public string TheString { get; set; }

    [ListNotEmptyValidator]
    public List<TestListItem> MyList { get; set; }

    public class TestListItem
    {
        [Range(1, Int32.MaxValue)]
        public int ListInt { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在问题是我的代码看起来像这样:

foreach (var prop in this.GetType().GetProperties())
{
    if (prop.PropertyType.FullName.StartsWith("System.Collections.Generic.List"))
    {
        IList list = prop.GetGetMethod().Invoke(this, null) as IList;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不想把那个字符串放在那里,但如果我做prop.PropertyType之类的东西是IList它永远不会评估为true.我如何解决它?

c# reflection properties

1
推荐指数
1
解决办法
610
查看次数