远程验证URL错误

本文关键字:URL 错误 验证 程验证 | 更新日期: 2023-09-27 18:12:56

我在我的web应用程序中使用MVC的远程验证。当我尝试使用Remote[]验证属性

[Remote("EmailExists", "Validation")]
public string EmailAddress { get; set; }

我希望这个电子邮件地址能联系到我的ValidationController,并调用EmailExists方法。

public class ValidationController : Controller
{
    public JsonResult EmailExists(string emailAddress)
    {
        return Membership.GetUser(emailAddress) != null ?
            Json("true", JsonRequestBehavior.AllowGet) :
            Json("Email does not exist", JsonRequestBehavior.AllowGet);
    }
}

呈现的HTML看起来像这样

<input class="form-control" data-val="true" data-val-remote="'EmailAddress' is invalid." data-val-remote-additionalfields="*.EmailAddress" data-val-remote-url="/IdSrv/Validation/EmailExists" id="EmailAddress" name="EmailAddress" type="text" value="">

但是,如果你看一下data-val-remote-url,你会发现当HTML实际呈现

时,它呈现的是完全不同的东西
<input class="form-control" data-val="true" data-val-remote="'EmailAddress' is invalid." data-val-remote-additionalfields="*.EmailAddress" data-val-remote-url="/IdSrv/issue/wstrust?controller=Validation&amp;action=EmailExists" id="EmailAddress" name="EmailAddress" type="text" value="">

我正在使用ThinkTecutre身份提供程序,但我不确定为什么Remote验证设置的默认路由是不正确的。我做错了什么,或者有什么我可以改变点URL到正确的位置?

远程验证URL错误

确保在默认路由之前没有在RoutingConfig.cs中定义任何自定义路由。

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
}

尝试将属性名与操作方法参数

匹配
public JsonResult EmailExists(string EmailAddress)
{
}

查看以下链接了解更多详细信息。

http://msdn.microsoft.com/en-us/library/gg508808%28vs.98%29.aspx

http://www.codeproject.com/Tips/669824/Implementing-Remote-Validation-in-MVC

http://www.codeproject.com/Articles/674288/Remote-Validation-in-MVC-Simple-Way-to-Pass-the-F