5

Có cách nào để gắn vào xác thực từ xa không phô trương MVC3 trên máy khách, trước khi dữ liệu được gửi đến phương thức từ xa và sau khi kết quả được trả về từ phương pháp từ xa?Móc sự kiện để xác thực từ xa MVC không phô trương

Tôi đang cố gắng yêu cầu trình xác thực từ xa chỉ thực hiện xác thực nếu nút gửi được nhấp. Hành vi bình thường là xác nhận nhiều lần, chẳng hạn như trong khi nhấn phím, làm mờ, v.v. Điều này là không tốt, vì phương thức xác thực được đề cập cần gọi một hoạt động không phải là idempotent. Tôi cần đảm bảo rằng phương thức chỉ được gọi nếu người dùng đã nhấp vào nút gửi.

Nếu tôi có thể tham gia vào một sự kiện trước đó, tôi có thể đặt trường trong biểu mẫu gắn cờ nút gửi dưới dạng được nhấp vào hay không. Tuy nhiên tôi sẽ cần phải thiết lập lại cờ này sau khi phương thức từ xa trả về kết quả xác thực.

Bất kỳ đề xuất nào khác? Đây là để xác thực mật khẩu bằng cách sử dụng phương thức Membership.ValidateUser(string username, string password) của Nhà cung cấp thành viên ASP.NET. Phương pháp này sẽ tăng khi FailedPasswordAttemtCount mỗi lần một mật khẩu hợp lệ được gửi đi, vì vậy tôi không muốn nó thực hiện trong mờ, bấm phím vv

Trả lời

7

Bạn có thể ghi đè tùy chọn xác nhận mặc định cho trang hiện tại:

$.validator.setDefaults({ 
    onkeyup: false, 
    onfocusout: false, 
    onsubmit: true 
}); 
+0

Không ghi đè cài đặt mặc định ảnh hưởng đến các biểu mẫu khác? Hoặc thiết lập các giá trị mặc định chỉ phạm vi cho trang hiện đang được tải? – danludwig

+0

Chỉ phạm vi của trang hiện được tải. –

+0

Đây thực sự là giải pháp tốt nhất, cảm ơn. Chỉ để thỏa mãn sự tò mò của tôi, là câu trả lời cho câu hỏi của tôi "Không có bất kỳ" hoặc "Nó không phải là dễ dàng"? – danludwig

0

Giải pháp trên không giải quyết được vấn đề này cho tôi. Bằng cách nào đó, cài đặt trình xác thực không được đặt. Vì vậy, tôi đã thực hiện những điều sau và đã hoạt động:

$(function() { 
    var settings = $.data($('form')[0], 'validator').settings; 
    settings.onkeyup = false; 
}); 
Các vấn đề liên quan