Как установить / удалить атрибуты динамически в C #? - PullRequest
6 голосов
/ 21 февраля 2012

Я использую проверку атрибутов в моем проекте.

[Required(ErrorMessage = "DepartmentCode is Required")]
public string DepartmentCode { get; set; }

В некоторых случаях DepartmentCode не требуется. Как я могу динамически игнорировать валидацию в моем случае?

Ответы [ 4 ]

1 голос
/ 21 февраля 2012

Посмотрите на: Динамическое удаление атрибута C # свойства

В любом случае, я думаю, что правильным решением является наследование атрибута от RequiredAttribute и переопределение метода Validate() (так что вы можете проверить, когда это поле является обязательным или нет).Вы можете проверить реализацию CompareAttribute, если хотите, чтобы проверка на стороне клиента работала.

1 голос
/ 21 февраля 2012

Вместо того, чтобы динамически добавлять и удалять валидацию, вам лучше создать атрибут, который лучше подходит для этой цели.

Следующая статья демонстрирует это (MVC3 с проверкой на стороне клиента): http://blogs.msdn.com/b/simonince/archive/2011/02/04/conditional-validation-in-asp-net-mvc-3.aspx

0 голосов
/ 15 августа 2013

Я обошел эту проблему в модели, в некоторых случаях она не идеальна, но это самый дешевый и быстрый способ.

public string NonMandatoryDepartmentCode
{
    get
    {
        return DepartmentCode;
    }
    set
    {
        DepartmentCode = value;
    }
}

Я использовал этот подход для MVC, когда базовая модель, которую я унаследовал, содержалаатрибуты, которые я хотел переопределить.

0 голосов
/ 21 февраля 2012

Я бы удалил RequiredAttribute из вашей модели и проверил бы его, как только вы попали в контроллер, и проверил его на предмет того, что делает его ненужным.

Если это относится к случаю, когда это требуется, и значение не заполнено, добавьте ошибку в ModelState вручную

ModelState.AddModelError("DepartmantCode", "DepartmantCode is Required");

Вы просто потеряете проверку на стороне клиента таким образом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...