2016-08-07 50 views
0

Remote属性在验证时未触发控制器。有没有人有一个线索,为什么不呢?在ASP Core 1.0 RC2中远程未触发

我有以下类:

public class XUser{ 
    [Required] 
    [Range(0, 100, ErrorMessage = "This is an incorrect ID")] //Just a test 
    public int ID { get; set; } 

    [Required] 
    [Remote("CheckUsername", "Home")] 
    public string Name { get; set; } 

    [Required] 
    [RegularExpression(@"[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}", ErrorMessage ="This is not an email adres!")] 
    public string Email { get; set; } 
} 

以下控制器:

[HttpGet] 
public IActionResult Edit(Int64 id) { 
    return View(users.Where(u => u.ID == id).SingleOrDefault()); 
} 

[HttpPost] 
[ValidateAntiForgeryToken] 
public IActionResult Edit(XUser user) { 
    if (ModelState.IsValid) { 
     return RedirectToAction("Index"); 
    } else { 
     return View(user); 
    } 
} 

[HttpGet] 
public JsonResult CheckUsername(string Name) { 
    return Json(false); 
} 

最后但并非最不重要的,以下几种观点:

@model XUser 
@using (Html.BeginForm("Edit", "Home", FormMethod.Post)) { 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

    @Html.EditorFor(Model => Model.ID) @Html.ValidationMessageFor(Model => Model.ID) 
    @Html.EditorFor(Model => Model.Name) @Html.ValidationMessageFor(Model => Model.Name) 
    @Html.EditorFor(Model => Model.Email) @Html.ValidationMessageFor(Model => Model.Email) 
    <input type="submit" value="Save" /> 
} 

在我_layout我有包括以下脚本:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

我也试过如下:

//Class 
[Required] 
[Remote("CheckUsername", "Home", HttpMethod = "POST")] 
public string Name { get; set; } 
//Controller 
[HttpPost] 
[AllowAnonymous] 
public JsonResult CheckUsername(string Name) { 
    return Json(false); 
} 
+1

什么是ASP Core 2.0 ...? – Tseng

+0

@Tseng应该是1.0 – Sliver2009

回答

1

我会回答我的问题作进一步的参考,如果别人将沿着同样的问题来了。我可以在解决方案资源管理器中看到它,但有些事情你只是忽略了,可以节省很多时间!

随着Fiddler,我看到没有找到JQuery文件。路径与MVC 4.0/5.0路径不匹配。

~/Scripts/jquery.validate.min.js 
~/Scripts/jquery.validate.unobtrusive.min.js 

要: 他们已经从移动

~/lib/jquery-validation/dist/jquery.validate.js 
~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js 

更多; AllowAnonymous没有义务作为Remote []的属性(对于HttpPost或HttpGet)。