Я пытаюсь добавить собственный валидатор, используя библиотеку MVC Foolproof.
Однако, следуя инструкциям здесь, я получаю сообщение об ошибке "Система не определена".
Я подозреваю, что это связано с тем, что библиотека изначально была написана для работы со старыми файлами сценариев проверки, которые поставлялись с MVC 2 (и, возможно, 3), поэтому есть ли способ зарегистрировать мою функцию проверки для файлов проверки javascript, которые поставляются с MVC 4?
Свойство моей модели определяется как
[RatingTextRequired(ErrorMessageResourceType = typeof(ModelResources.Customer.Order.FeedbackRating), ErrorMessageResourceName = "RequiredError_Comment")]
public string FeedbackText { get; set; }
Атрибут проверки определяется как
public class RatingTextRequiredAttribute : ModelAwareValidationAttribute
{
//this is needed to register this attribute with foolproof's validator adapter
static RatingTextRequiredAttribute()
{
Register.Attribute(typeof (RatingTextRequiredAttribute));
}
public override bool IsValid(object value, object container)
{
var model = (Areas.Customer.Models.FeedbackRating) container;
return !(String.IsNullOrWhiteSpace(value.ToString()) && (model.WantsPostEditing || model.Rating == "0"));
}
}
И подключение JavaScript для этого
Sys.Mvc.ValidatorRegistry.validators["ratingtextrequired"] = function (rule) {
return function(value, context) {
var wantsPostEditingProp = foolproof.getId(context.fieldContext.elements[0], "WantsPostEditing");
var wantsPostEditingVal = document.getElementById(wantsPostEditingProp).value;
var ratingProp = foolproof.getId(context.fieldContext.elements[0], "Rating");
var ratingVal = document.getElementById(ratingProp).value;
return !(value.length == 0 && (wantsPostEditingVal || ratingVal === "0"));
};
};
Кроме того, я не уверен, для чего требуется файл MvcFoolproofJQueryValidation.js, потому что каким-то образом у меня была стандартная проверка, работающая без этого файла сценария. К сожалению, включение этого не помогает с моей ошибкой "Sys не определена".