asp.net-mvc - 在非侵入式适配器期间使用 jQuery .ajax 进行验证

标签 asp.net-mvc jquery asp.net-mvc-4 jquery-validate

我在一个类上定义了一个不显眼的验证,它验证输入的数字是数据库中的有效数字。我不想使用 Remote 属性,因为它将我绑定(bind)到特定的 Controller 而不是服务,并且该类实际上位于不在 MVC Web 应用程序中的库中。我想按如下方式使用 JavaScript:

$.validator.addMethod("validid", function (value, element) { 

    $.ajax({
      url: 'mypage.html',
      success: function(){
        return true;
      },
      error: function(){
        return false;
      }
    });
}); 

$.validator.unobtrusive.adapters.addBool("validid"); 

我知道我可以使用addsingleval并传入数组中的所有有效ID,但我更喜欢该方法来调用服务并验证服务器上的sing值,而不是传入数组中的所有可能值数据库。我确实认识到进行异步调用并尝试返回已完成的函数中的值的问题,但我想知道是否还有其他方法可以完成这项工作。

最佳答案

I'd prefer not to use a Remote attribute, as it ties me to a specific controller instead of a service, and the class is actually in a library that is not in the MVC Web application.

如果我理解您的问题,那么阻止您使用 Asp.Net Mvc Remote 属性的原因是,仅当您想要指定任意 url 时才会向您提供路由。

也许您可以尝试使用 Remote 属性的自定义覆盖

public class CustomRemote : RemoteAttribute
{
    protected String url { get; set; }

    public CustomRemote(string url)
    {
        this.url = url;
    }

    protected override string GetUrl(ControllerContext controllerContext)
    {
        return url;
    }
}

然后,在您的 View 模型中:

[CustomRemote("mypage.html")]
public String Id

关于asp.net-mvc - 在非侵入式适配器期间使用 jQuery .ajax 进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20062041/

相关文章:

.net - 使用.Net Entity Framework 删除具有子关系的实体问题

jquery - 如何将 jQuery 添加到 HTML 页面?

javascript - Highcharts Columnrange数据标签高低不同颜色

c# - MVC5 项目中 exe 文件的用途是什么?

c# - 如何检测重叠的开始和结束日期时间(C#、ASP.NET、MVC)

.net - ASP.NET 将 CORS header 添加到 ashx 文件处理程序

asp.net-mvc - 我应该如何在多项目 mvc 应用程序中使用 ninject?

php - 获取解析为输入字段的 json 值

asp.net-mvc - ASP.NET MVC 框架 4.5 CSS bundle 无法在托管上运行

asp.net-mvc-4 - 如何将 kendo ui mvc 网格绑定(bind)到对象列表