Как указать ключ ошибки в ASP.NET MVC CustomValidation? - PullRequest
7 голосов
/ 02 августа 2010

Я пытаюсь добавить CustomValidation и заставить его вернуть ошибку для

Html.ValidationMessageFor (m => m.SubleaseCompany)

[CustomValidation(typeof(CreateSpaceModelValidation), "ValidateCreateSpaceModel")]
public class CreateSpaceModel
{
    public Building Building { get; set; }
    public Space Space { get; set; }

    public string SubleaseCompany { get; set; }
}

public class CreateSpaceModelValidation
{
    public static ValidationResult ValidateCreateSpaceModel(CreateSpaceModel model)
    {
        return new ValidationResult("You should specify Sublease Contact", new[] { "SubleaseCompany" }).;
    }
}

I 'используя второй аргумент для конструктора ValidationResult (memberNames), но это не похоже на работу.

1 Ответ

8 голосов
/ 01 июня 2011

Похоже, команда MVC никогда не реализовывала функциональность для параметра MemberNames. См. Следующий пример из .... http://devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2

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

return new ValidationResult(
    FormatErrorMessage(validationContext.DisplayName),

new [] {validationContext.MemberName, OtherProperty});

Если вы запустите свой код, вы найдете абсолютно без разницы. Это потому что, хотя эта перегрузка присутствует и предположительно используется в другом месте в .NET Framework, MVC рамки полностью игнорирует ValidationResult.MemberNames.

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