2017-02-02 3 views
0

i'am используя библиотеку классов для моих моделей и создаю свои контроллеры в области Теперь я хочу использовать удаленную проверку, но она не работает, на самом деле она не отображается.MVC Удаленная проверка не отображается

моя модель в библиотеке моделей класса

[System.ComponentModel.DataAnnotations.RegularExpression(@"(?=.*[a-zA-Z0-9]).{4,20}$", ErrorMessage = "error")] 
[System.ComponentModel.DataAnnotations.Required(ErrorMessage = "error")] 
[System.Web.Mvc.Remote("UserNameExist","AdminUser","Admin",ErrorMessage="error")] 
public string UserName { get; set; } 

мой контроллер в админке

[HttpPost] 
public JsonResult UserNameExist(string UserName) 
{ 
    using (DataBaseContext dbContext = new DataBaseContext()) 
    { 
     var user = dbContext.Users.SingleOrDefault(current => current.UserName == UserName); 
     return Json(user == null); 
    } 
} 

также я был добавлен JQuery и jquery.validation и jquery.validate.unobtrusive и я был добавлен этим к моему webconfig

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

Обновлено

визуализации HTML является:

<input class="form-control directionEn valid" data-val="true" data-val-regex="error" data-val-regex-pattern="(?=.*[a-zA-Z0-9]).{4,20}$" data-val-required="error" id="UserName" name="UserName" placeholder="User Name" type="text" value=""> 

там не приписывать для удаленной проверки

пользователя Вид:

@model Models.User 
@section Scripts 
{ 
    <script src="~/Scripts/jquery.validate.min.js"></script> 
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script> 
} 
<div class="row"> 
    <div class="col-lg-6 col-lg-offset-3 col-md-6 col-md-offset-3"> 
     <div class="form-group"> 
      <a class="btn btn-success" href="/Admin/AdminUser/List">List</a> 
     </div> 
    </div> 
</div> 
<div class="row"> 
    <div class="col-lg-6 col-lg-offset-3 col-md-6 col-md-offset-3"> 
     <div class="panel panel-default"> 
      <div class="panel-heading"> 
       <h4>Add New User</h4> 
      </div> 
      <div class="panel-body"> 
       @using (Html.BeginForm("Add", "AdminUser", null, FormMethod.Post, new { enctype = "multipart/form-data" })) 
       { 
        @Html.Raw(System.Web.HttpUtility.HtmlDecode((Html.ValidationSummary(true, "", htmlAttributes: new { @class = "alert alert-danger" }) ?? (object)"").ToString())) 

        <div class="form-group"> 
         <label> 
          UserName 
         </label> 
         @Html.TextBoxFor(model => model.UserName, htmlAttributes: new { @class = "form-control directionEn", @placeholder = "User Name" }) 
         @Html.ValidationMessageFor(model => model.UserName, "", htmlAttributes: new { @class = "validationError" }) 
        </div> 

       } 
      </div> 
     </div> 
    </div> 
</div> 

, что случилось в моем коде ???

+0

Что визуализируется? (покажите, как генерируется фактический html). И вы должны использовать '[Remote (« UserNameExist »,« AdminUser »,« Admin », ErrorMessage =« error »)]' (см. [Перегрузки] (https://msdn.microsoft.com/en-us/library /system.web.mvc.remoteattribute.remoteattribute(v=vs.118).aspx#M:System.Web.Mvc.RemoteAttribute.)) –

+0

Нет ничего плохого в коде, который вы показали (он генерирует правильные данные -val-remote- * 'атрибуты для меня). Что-то, что вы не показали нам, что это вызывает проблему. –

+0

Я думаю, что использование библиотеки Area или Class для контроллеров и моделей ошибочно, я не знаю, как это исправить. –

ответ

0

Прежде всего удалите HttpPost с вашего контроллера. Я не думаю, что RemoteValidation Работы по HttpPost

public JsonResult UserNameExist(string UserName) 
{ 
    using (DataBaseContext dbContext = new DataBaseContext()) 
    { 
     var user = dbContext.Users.SingleOrDefault(current => current.UserName == UserName); 
     return Json(user == null); 
    } 
} 

второе место в своей модели я не думаю, что есть использование параметра администратора

[System.ComponentModel.DataAnnotations.RegularExpression(@"(?=.*[a-zA-Z0-9]).{4,20}$", ErrorMessage = "error")] 
[System.ComponentModel.DataAnnotations.Required(ErrorMessage = "error")] 
[System.Web.Mvc.Remote("UserNameExist","AdminUser",,ErrorMessage="error")] 
public string UserName { get; set; } 

Также я считаю, у вас есть сообщение проверки дисплея

@Html.TextBoxFor(i => i.UserName) 
@Html.ValidationMessageFor(i => i.UserName) 

Вы также можете поместить debbuger в функцию UserNameExist и проверить, вызвана ли эта функция.

Мой рабочий Скрипач: https://dotnetfiddle.net/dlME8p

+0

Я добавляю пользовательский взгляд в вопрос –

+0

Вы попробовали мое решение? –

+0

Да, но не работает –

Смежные вопросы