Я пытался правильно реализовать проверку формы, и обсуждение списка рассылки fubu было наиболее полезным (http://groups.google.com/group/fubumvc-devel/browse_thread/thread/d54b135fe0254653/12180cd86e9dc50b).. Я до сих пор не совсем уверен в некоторых моментах, я новичок, поэтому яПрохожу через некоторое бритье яков.
Кажется, что пример, приведенный в обсуждении, выполнил проверку в самом контроллере с использованием IsValid (модель).
Я пытаюсь избежать этогоукрасить мою входную модель атрибутами проверки, такими как Required, и затем использовать конфигурацию проверки для передачи при сбое (через политику).
this.Validation(x => {
x.Actions
.Include(call => call.HasInput && call.InputType().Name.EndsWith("Input"));
x.Failures
.ApplyPolicy<AccountValidationFailedPolicy>();
});
А вот класс, который влияет на политику:
public class AccountValidationFailedPolicy : IValidationFailurePolicy {
public bool Matches(ValidationFailure context) {
return (context.InputType() == typeof (RegisterAccountInput));
}
public void Handle(ValidationFailure context) {
var incomingRequest = (RegisterAccountInput) context.InputModel;
var failedValidation = new RegisterationFailedNotification {
CVV = incomingRequest.CVV,
AcceptTerms = incomingRequest.AcceptTerms,
Countries = incomingRequest.Countries,
PhoneNumber = incomingRequest.PhoneNumber,
PIN = incomingRequest.PIN
};
FubuContinuation.TransferTo(failedValidation);
}
}
Ручка просто пытается перейти к другому действию через новую модель, копируя значения в новую модель, чтобы я мог снова отобразить их в форме.
Я, должно быть, здесь что-то делаю не так, потому что этоУ меня нет класса с этим методом, который я надеялся бы обработать.
public AccountViewModel New (Уведомление RegistivationFailedNotification) {....}
Я здесь на пути или есть что-то фундаментальное, чего я не получаю?Возможно, политика здесь не то, что нужно делать?