2012-05-19 80 views
2

我试图在MVC 3中首次使用远程数据注释。 我缺少一些简单的东西。安装程序根本没有触发控制器操作,我也没有看到这个问题。mvc 3远程验证没有触发

我正在尝试验证唯一性的用户名。

以下是代码设置。

查看代码

@Html.Raw(Html.Script("jquery.validate.min.js")) 
@Html.Raw(Html.Script("jquery.validate.unobtrusive.min.js")) 

<tr> 
      <td class="editor-label">@Html.LabelFor(model => model.UserName):</td> 
      <td class="editor-field">@Html.EditorFor(model => model.UserName)</td> 
      <td>@Html.ValidationMessageFor(model => model.UserName)</td> 
     </tr> 

视图模型代码

[DisplayName("Username")] 
    [StringLength(100)] 
    [Remote("CheckIfUsernameExists", "UserProfile", ErrorMessage = "This username is taken. Please enter a different user name.")] 
    public string UserName { get; set; } 

控制器代码

[HttpGet] 
     public JsonResult CheckIfUsernameExists(string userName) 
     { 
      return Json("false"); 
     } 
+0

是字符串长度的客户端验证射击? – Rafay

+0

你可以找到其他选项:http://stackoverflow.com/a/37366502/4146766 –

回答

1

检查你的设置,客户端验证和不显眼的应该启用

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 

与下面的代码应该工作

[Get] 
    public JsonResult CheckIfUsernameExists(string userName) 
    { 
     return Json(false,JsonRequestBehavior.AllowGet); 
    } 
+0

我有2个viewmodels在同一个.cs文件,并有错误的viewmodel dataannotation。代码现在按预期工作,谢谢。 – Matt