相关疑难解决方法(0)

ASP.NET MVC条件验证

如何使用数据注释对模型进行条件验证?

例如,假设我们有以下模型(Person和Senior):

public class Person
{
    [Required(ErrorMessage = "*")]
    public string Name
    {
        get;
        set;
    }

    public bool IsSenior
    {
        get;
        set;
    }

    public Senior Senior
    {
        get;
        set;
    }
}

public class Senior
{
    [Required(ErrorMessage = "*")]//this should be conditional validation, based on the "IsSenior" value
    public string Description
    {
        get;
        set;
    }
}
Run Code Online (Sandbox Code Playgroud)

以下观点:

<%= Html.EditorFor(m => m.Name)%>
<%= Html.ValidationMessageFor(m => m.Name)%>

<%= Html.CheckBoxFor(m => m.IsSenior)%>
<%= Html.ValidationMessageFor(m => m.IsSenior)%>

<%= Html.CheckBoxFor(m => m.Senior.Description)%>
<%= Html.ValidationMessageFor(m => m.Senior.Description)%> …
Run Code Online (Sandbox Code Playgroud)

c# forms validation asp.net-mvc

122
推荐指数
7
解决办法
14万
查看次数

ASP MVC:自定义验证属性

我正在尝试编写自己的自定义验证属性,但我遇到了一些问题.

我试图写的属性是当用户登录时,密码将与确认密码进行比较.

namespace Data.Attributes
{
public class ComparePassword : ValidationAttribute
{
    public string PasswordToCompareWith { get; set; }

    public override bool IsValid(object value)
    {
        if (PasswordToCompareWith == (string)value)
        {
            return true;
        }
       return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是当我试图在模型文件中设置这样的属性时:

 [Required]
    [ComparePassword(PasswordToCompareWith=ConfirmPassword)]
    public string Password { get; set; }


    [Required]
    public string ConfirmPassword { get; set; }
   }
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误1非静态字段,方法或属性'Project.Data.Models.GebruikerRegistreerModel.ConfirmPassword.get'需要对象引用

似乎VS不接受confirmpasswordPasswordToCompareWith=ConfirmPassword部分.

我究竟做错了什么?

c# validation asp.net-mvc attributes asp.net-mvc-2

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

属性级验证错误会阻碍类级验证的验证

Bounty获奖后更新

一个新的解决方案正在解决这个问题.请参考ASP.NET MVC 3预览1:http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx

查看模型验证改进部分,您将在其中看到我的问题的解决方案.


原帖

参考我之前的文章如何使用ASP.NET MVC 2验证两个属性,其中我问我如何比较模型验证的两个属性.

我确实觉得这个答案很有用,但我遇到了一个完全不同的问题:

问题:如果属性级ValidationAttribute包含错误,则不验证类级别ValidationAttributes.

请考虑以下事项:

[EqualTo("Email", "EmailConfirm", ErrorMessage = "E-mailadresserne skal være ens")]
[EqualTo("Password", "PasswordConfirm", ErrorMessage = "Adgangskoderne skal være ens")]
[Bind(Exclude="UserId")]
public class EditSiteUser
{
    [Required(ErrorMessage="Du skal bekræfte adgangskode")]
    public string PasswordConfirm { get; set; }

    [Required(ErrorMessage="Du skal bekræfte e-mailadressen")]
    [Email(ErrorMessage="Ugyldig e-mailadresse")]
    public string EmailConfirm { get; set; }
    public int UserId { get; set; }

    [Required(ErrorMessage = "Du skal indtaste et brugernavn")]
    public …
Run Code Online (Sandbox Code Playgroud)

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

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

有没有办法通过数据注释来验证一个日期属性是否大于或等于另一个日期属性?

我有一个StartDateEndDate我的SchoolEvents模型,我想知道是否有任何数据注释我可以用来验证StartDate小于或等于,EndDate并且EndDate大于或等于StartDate

c# asp.net data-annotations asp.net-mvc-4

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

自定义验证属性不称为ASP.NET MVC

大家好我已创建自定义验证属性并将其分配给类级别验证.不幸的是,它没有被调用.我尝试各种方式,认为它可以解决问题.但是,它花了我几个小时,我发现验证机制没有调用该属性.

为了说明你,我把以下代码.

属性

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
    public sealed class BooleanDependencyAttribute : ValidationAttribute
    {
        private const string _defaultErrorMessage = "?????????{0}";
        private readonly object _typeId = new object();

        public string DependencyPropertyName { get; private set; }
        public string DependentPropertyName { get; private set; }

        public BooleanDependencyAttribute(string dependencyPropertyName, string dependentPropertyName)
            : base(_defaultErrorMessage)
        {
            DependencyPropertyName = dependencyPropertyName;
            DependentPropertyName = dependentPropertyName;
        }



        public override object TypeId
        {
            get
            {
                return _typeId;
            }
        }

        public override string FormatErrorMessage(string name)
        {
            return String.Format(CultureInfo.CurrentUICulture, …

c# asp.net-mvc asp.net-mvc-2

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