2017-08-28 65 views
1

我正在與角JS的MVC。我添加了ADO.NET模型來生成基本類。我正在嘗試通過使用帶有ADO.NET模型實體的Angular Js來註冊用戶。我有兩個錯誤,當我點擊提交按鈕,我得到這個錯誤....驗證失敗的一個或多個實體在角Js

angular.js:12701 POST http://localhost:53526/Register/AddUser 500 (Internal Server Error)... 

當我點擊從控制檯窗口從谷歌瀏覽器的話這個鏈接....

**Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. 

這裏是我的本地類加密用戶密碼..

public static class Utility 
     { 
      public static string Encryptpassword(string password) 
      { 
       string hashedPassword = BCrypt.Net.BCrypt.HashPassword(password, BCrypt.Net.BCrypt.GenerateSalt(12)); 
       return hashedPassword; 
      } 

      public static bool CheckPassword(string enteredPassword, string hashedPassword) 
      { 
       bool pwdHash = BCrypt.Net.BCrypt.Verify(enteredPassword, hashedPassword); 
       return pwdHash; 
      } 
     } 
    } 

這是我的註冊控制器類...

public class RegisterController : Controller 
    { 
     public ActionResult Register() 
     { 
      return View(); 
     } 

     //To check that user entered is already present or not. 
     public bool CheckUser(string user) 
     { 
      bool Exists = false; 
      using (HalifaxDatabaseEntities context = new HalifaxDatabaseEntities()) 
      { 
       var uName = context.UserLogins.Where(x => x.UserName == user).ToList(); 
       if (uName.Count != 0) 
       { 
        Exists = true; 
       } 
      } 
      return Exists; 
     } 

     //For saving the user details in database table.   
     public string AddUser(UserLogin usr) 
     { 
      if (usr != null) 
      { 
       if (CheckUser(usr.UserName) == false) 
       { 
        using (HalifaxDatabaseEntities context = new HalifaxDatabaseEntities()) 
        { 
         UserLogin createUser = new UserLogin(); 
         createUser.UserName = usr.UserName; 
         createUser.Firstname = usr.Firstname; 
         createUser.Lastname = usr.Lastname; 
         createUser.Email = usr.Email; 
         createUser.DateTimeCreated = DateTime.Now; 
         createUser.Password = Utility.Encryptpassword(usr.Password); 
         context.UserLogins.Add(createUser); 
         context.SaveChanges(); 
        } 
        return "User created !"; 
       } 
       else 
       { 
        return "User already present !"; 
       } 
      } 
      else 
      { 
       return "Invalid Data !"; 
      } 
     } 
    } 
} 

這裏是角的js代碼(Module.js)....

var app = angular.module("myApp", []) 
     .controller('Ctrl', ["$scope", 'myService', function ($scope, myService) { 

      $scope.SaveUser = function() { 
       $("#divLoading").show(); 
       var User = { 
        FName: $scope.fName, 
        LName: $scope.lName, 
        Email: $scope.uEmail, 
        Password: $scope.uPwd, 
        UserName: $scope.uName 
       }; 

       var response = myService.AddUser(User); 
       response.then(function (data) { 
        if (data.data == "1") { 
         $("#divLoading").hide(); 
         clearFields(); 
         alert("User Created !"); 
         window.location.href = "/Register/Login"; 
        } 
        else if (data.data == "-1") { 
         $("#divLoading").hide(); 
         alert("user alraedy present !"); 
        } 
        else { 
         $("#divLoading").hide(); 
         clearFields(); 
         alert("Invalid data entered !"); 
        } 
       }); 
      } 

      function clearFields() { 
       $scope.fName = ""; 
       $scope.lName = ""; 
       $scope.Email = ""; 
       $scope.Password = ""; 
       $scope.UserName = ""; 
      } 

     }]) 
     .service("myService", function ($http) { 

      this.AddUser = function (User) { 
       var response = $http({ 
        method: "post", 
        url: "/Register/AddUser", 
        data: JSON.stringify(User), 
        dataType: "json" 
       }); 
       return response; 
      } 
     }) 

這裏是我的html代碼...

@{ 
    Layout = null; 
} 


<html ng-app="myApp"> 
<head> 
    <title>Register</title> 

    <script src="~/Scripts/angular.min.js"></script> 
    <script src="~/Scripts/MyScript/Module.js"></script> 
    <script src="~/Scripts/jquery-1.12.4.js"></script> 
    <script src="~/Scripts/jquery-ui-1.12.1.js"></script> 
    <script src="~/Scripts/bootstrap.js"></script> 

    <link href="~/Content/bootstrap.css" rel="stylesheet" /> 


</head> 
<body> 

    <div class="container" ng-controller="Ctrl"> 
     <br /> 

     <div class="row"> 
      @*<img src="~/Content/Images/user.png" />*@<h4>Register User</h4> 
      <hr /> 

      <br /> 
      <div class="col-md-6"> 
       <form name="userForm" novalidate> 
        <div class="form-horizontal"> 
         <div class="form-group"> 
          <div class="row"> 
           <div class="col-md-3" style="margin-left: 15px; color: #5bc0de;"> 
            First Name : 
           </div> 
           <div class="col-md-6"> 
            <input type="text" class="form-control" placeholder="First Name" name="fName" ng-model="fName" required autofocus /> 
           </div> 
          </div> 
         </div> 
         <div class="form-group"> 
          <div class="row"> 
           <div class="col-md-3" style="margin-left: 15px; color: #5bc0de;"> 
            Last Name : 
           </div> 
           <div class="col-md-6"> 
            <input type="text" class="form-control" placeholder="Last Name" name="lName" ng-model="lName" required autofocus /> 
           </div> 
          </div> 
         </div> 
         <div class="form-group"> 
          <div class="row"> 
           <div class="col-md-3" style="margin-left: 15px; color: #5bc0de"> 
            Email : 
           </div> 
           <div class="col-md-6"> 
            <input type="email" class="form-control" placeholder="User's Email" name="uEmail" ng-model="uEmail" required autofocus /> 
           </div> 
          </div> 
         </div> 
         <div class="form-group"> 
          <div class="row"> 
           <div class="col-md-3" style="margin-left: 15px; color: #5bc0de;"> 
            Username : 
           </div> 
           <div class="col-md-6"> 
            <input type="text" class="form-control" placeholder="Username" name="uName" ng-model="uName" required autofocus /> 
           </div> 
          </div> 
         </div> 
         <div class="form-group"> 
          <div class="row"> 
           <div class="col-md-3" style="margin-left: 15px; color: #5bc0de;"> 
            Password : 
           </div> 
           <div class="col-md-6"> 
            <input type="password" class="form-control" placeholder="Password" name="uPwd" ng-model="uPwd" required autofocus /> 
           </div> 
          </div> 
         </div> 
         <div class="form-group"> 
          <div class="row"> 
           <div class="col-md-4"></div> 
           <div class="col-md-3"> 
            <input type="button" value="Save" ng-click="SaveUser();" class="btn btn-success" /> 
           </div> 
           <div class="col-md-3"> 
            @Html.ActionLink("Sign in", "Login", "Register", new { @class = "btn btn-info" }) 
           </div> 
          </div> 
         </div> 
         <div class="form-group"> 
          <div class="row"> 
           <div class="col-md-6"> 
            <div id="divLoading" style="margin: 0px; padding: 0px; position: fixed; right: 0px; top: 0px; width: 100%; height: 100%; background-color: #666666; z-index: 30001; opacity: .8; filter: alpha(opacity=70); display: none"> 
             <p style="position: absolute; top: 30%; left: 45%; color: White;"> 
              please wait...<img src="~/Content/images/load.png"> 
             </p> 
            </div> 
           </div> 
          </div> 
         </div> 
        </div> 
       </form> 
      </div> 
     </div> 
    </div> 
</body> 
</html> 

這裏是屏幕當我運行應用程序,並單擊提交按鈕.. Click here to find the out put

下面是屏幕截圖,當我點擊這個鏈接http://localhost:53526/Register/AddUser形式的控制檯窗口..

Click Here to see the result

回答

1

你只需要通過它無需JSON.stringify,也不需要提及的數據類型

.service("myService", function ($http) { 

     this.AddUser = function (User) { 
      var response = $http({ 
       method: "POST", 
       url: "/Register/AddUser", 
       data: User 
      }); 
      return response; 
     } 
    }) 

也適用此對您的SaveChanges函數來查看由於您是確切的列名面對這個問題

try 
{ 
    // Your code... 
    // Could also be before try if you know the exception occurs in SaveChanges 

    context.SaveChanges(); 
} 
catch (DbEntityValidationException e) 
{ 
    foreach (var eve in e.EntityValidationErrors) 
    { 
    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", 
     eve.Entry.Entity.GetType().Name, eve.Entry.State); 
    foreach (var ve in eve.ValidationErrors) 
    { 
     Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", 
      ve.PropertyName, ve.ErrorMessage); 
    } 
    } 
    throw; 
} 
+0

遺憾,當我更換 – Rasel

+0

嘗試,現在你只需要通過這種方式傳遞不JSON.stringyfy –

+0

對不起朋友還是同樣的錯誤 – Rasel

相關問題