1

관리자가 사용자 이름과 암호를 사용하여 데이터베이스에 여러 사용자를 한 번에 추가 할 수있는 페이지가 있습니다.다중 등록 모델 (mvc)을 사용하여 양식에 대한 사용자 이름 확인이 작동하지 않습니다.

[HttpPost] 
    public JsonResult doesUserNameExist(string UserName) 
    { 

     var user = Membership.GetUser(UserName); 
     return Json(user == null); 
    } 

을 지금이 하나의 사용자가되는으로, 하나의 양식에 잘 작동 : 내 계정 컨트롤러에서

public class RegisterModel 
{ 
    [Required] 
    [Display(Name = "User name")] 
    [System.Web.Mvc.Remote("doesUserNameExist", "Account", HttpMethod = "POST", ErrorMessage = "User name already exists. Please enter a different user name.")] 
    public string UserName { get; set; } 

// ...etc 

} 

나는이있다 : 내 계정 모델에 내가 이것을 그래서 나는, 원격 사용자 이름 확인을 사용 mvc html 헬퍼를 사용하여 생성했습니다. 입력란에 입력하는대로 사용자 이름이 사용 중임을 알리는 메시지가 표시됩니다. 나는 검증은 사용자 이름 입력 필드에 속성을 추가해야 이해

@model List<PicsWebApp.Models.UserRegisterModel> 

@{ 
    ViewBag.Title = "NewRep"; 
} 

<div class="col-lg-12"> 
    <h1>First-Time Setup</h1> 
</div> 
<legend></legend> 
<div class="col-lg-12"> 
    <h3>Add Representatives <small>You can add more representatives later</small></h3> 
    @using (Html.BeginForm("NewRep", "Admin", new { jobid = ViewData["jobid"] }, FormMethod.Post, new { @class = "form" })) 
    { 
      @Html.ValidationSummary(true) 
     <p> 
      <a href="@Url.Action("Index", "Home")" class="btn btn-warning">Skip</a> 
      <input type="submit" class="btn btn-primary" /> 
      <button type="button" class="btn btn-default" id="add">Add Rep</button> 
     </p> 
     <div id="fieldform" class="col-lg-12"> 
      <div id="container0" class="col-lg-4" style="background-color: #eee; border: 4px solid white;"> 
       <h4 style="text-align: center">New Rep</h4> 
       <div class="form-group"> 
        <label>Representative Name</label><input type="text" class="form-control" name="models[0].RepName" /> 
       </div> 
       <div class="form-group"> 
        <label>Contact Number</label><input type="text" class="form-control" name="models[0].ContactNumber" /> 
       </div> 
       <div class="form-group"> 
        <label>Rep Username</label><input type="text" class="form-control" name="models[0].UserName" /> 
        <input class="text-box single-line" data-val="true" data-val-remote="User name already exists. Please enter a different user name." data-val-remote-additionalfields="*.UserName" data-val-remote-type="POST" data-val-remote-url="/Account/doesUserNameExist" data-val-required="The User name field is required." id="UserName" name="models[0].UserName" type="text"> 
       <span class="field-validation-valid" data-valmsg-for="UserName" data-valmsg-replace="true"></span> 
       </div> 
       <div class="form-group"> 
        <label>Location</label><select id="select-0" class="form-control" name="models[0].Location"></select> 
       </div> 
       <div class="form-group"> 
        <label>Rep Password</label><input type="password" class="form-control" name="models[0].Password" /> 
       </div> 
       <div class="form-group"> 
        <label>Confirm Password</label><input type="password" class="form-control" name="models[0].ConfirmPassword" /> 
       </div> 
      </div> 
     </div> 
    } 
</div> 
<script src="https://code.jquery.com/jquery.js"></script> 
<script type="text/javascript"> 

    var selectValues = { 
     "Johannesburg": "Johannesburg", 
     "Pretoria": "Pretoria", 
     "Cape Town": "Cape Town", 
     "Pretoria": "Pretoria", 
     "Durban": "Durban", 
     "Centurion": "Centurion" 
    }; 

    $.each(selectValues, function (key, value) { 
     $('select') 
      .append($('<option>', { value: key }) 
      .text(value)) 
      .prop("selectedIndex", -1); 
    }); 

    var i = 1; 
    $("#add").click(function() { 
     var inputfield = '<div class="col-lg-4" id="' + container + i + '" style="background-color: #eee; border: 4px solid white;"><h4 style="text-align: center">New Rep</h4><div class="form-group"><label>Representative Name</label><input type="text" class="form-control" name="models[' + i + '].RepName" /></div>' + 
      '<div class="form-group"><label>Contact Number</label><input type="text" class="form-control" name="models[' + i + '].ContactNumber" /></div>' + 
       '<div class="form-group"><label>Rep Username</label><input type="text" class="form-control" name="models[' + i + '].UserName" /></div>' + 
        '<div class="form-group"><label>Location</label><select id="select-' + i + '" class="form-control" name="models[' + i + '].Location"></select></div>' + 
         '<div class="form-group"><label>Rep Password</label><input type="password" class="form-control" name="models[' + i + '].Password" /></div>' + 
          '<div class="form-group"><label>Confirm Password</label><input type="password" class="form-control" name="models[' + i + '].ConfirmPassword"/></div></div>' 
     $('#fieldform').append(inputfield) 

     $.each(selectValues, function (key, value) { 
      $('#select-' + i) 
       .append($('<option>', { value: key }) 
       .text(value)) 
       .prop("selectedIndex", -1); 
     }); 
     i++ 
    }); 

</script> 

을하지만 난 시도 :하지만 MVC 도우미, 대신 순수 HTML과 자바 스크립트를 사용하지 않는이 양식에, 그것은 표시되지 않습니다 그것은 여전히 ​​작동하지 않았다. 어떤 아이디어?

답변

0

Validator 클래스를 사용하여 컨트롤러에서 (ajax 요청이 전송 될 때) 유효성을 검사 할 수 있습니다. 이 클래스를 사용하면 Validator.TryValidateObject를 호출하여 [필수]와 같은 모델의 데이터 주석을 유효화 할 수 있습니다.

그런 다음 성공/실패 메시지로 생성 된 json 데이터를 반환합니다.

http://odetocode.com/blogs/scott/archive/2011/06/29/manual-validation-with-data-annotations.aspx

: 여기

정말이 나를 도와 기사입니다