2017-03-01 79 views
2

但是,在控制器中,參數始終爲空/默認值。請參閱下面的代碼,讓我知道我是否犯了一個愚蠢的錯誤或什麼。AJAX發佈到ASP.NET核心MVC 6控制器的操作方法和參數爲空

Plz see image

這裏是我的控制器的操作方法:

[HttpPost] 
public JsonResult AjaxMethodTemp([FromBody]UserAccount user) 
{ 
    //string Name = name + DateTime.Now.ToString(); 

    //return Json(Name); 
    try 
    { 
     //if (ModelState.IsValid) 
     //{ 
      _context.userAccount.Add(user); 
      _context.SaveChanges(); 
      ModelState.Clear(); 

      ViewBag.Massege = user.FirstName + "_" + user.LastName + " is Successfully Registered"; 
     //} 
    } 
    catch (DbUpdateException /* ex */) 
    { 
     //Log the error (uncomment ex variable name and write a log. 
     ModelState.AddModelError("", "Unable to save changes. " + 
      "Try again, and if the problem persists " + 
      "see your system administrator."); 
    } 
    return Json(user.FirstName + "_" + user.LastName + " is Successfully Registered"); 

} 

這裏是我的AJAX後:

function SaveCity() { 
    debugger 
    var $form = $('#contactForm'); 
    $form.removeData('validator'); 
    $form.removeData('unobtrusiveValidation'); 
    $.validator.unobtrusive.parse($form); 
    $form.validate(); 
    if ($form.valid()) { 

     $.ajax({ 
      type: "POST", 
      url: "/Home/AjaxMethodTemp", 
      //url:"/api/users", 
      contentType: "application/json; charset=utf-8", 
      data: 
       { 
        Password: "abc", 
        UserName: "abc", 
        Email: "[email protected]", 
        FirstName: "abc", 
        LastName: "abc" 
       }, 
      //data: JSON.stringify({ 
      // FirstName: $('#FirstName').val(), 
      // LastName: $("#LastName").val(), 
      // Email: $("#Email").val(), 
      // UserName: $("#UserName").val(), 
      // Password: $("#Password").val() 
      //}), 
      success: function (data) { 
      } 

     }); 

    } 
} 

這裏是我的表單數據:

<form id="contactForm"> 
    @* asp-controller="Home" asp-action="AjaxMethod method="post""*@ 
    @if (ViewBag.Massege != null) 
    { 
     <div class="form-control"> 
      <div class="col-md-10">@ViewBag.Massege</div> 
     </div> 
    } 

    <div class="form-group"> 
     <label asp-for="FirstName" class="col-md-2 control-label"></label> 
     <div class="col-md-10"> 
      <input asp-for="FirstName" id="FirstName" class="form-control" /> 
      <span asp-validation-for="FirstName" class="text-danger"></span> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label asp-for="LastName" class="col-md-2 control-label"></label> 
     <div class="col-md-10"> 
      <input asp-for="LastName" id="LastName" class="form-control" /> 
      <span asp-validation-for="LastName" class="text-danger"></span> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label asp-for="Email" class="col-md-2 control-label"></label> 
     <div class="col-md-10"> 
      <input asp-for="Email" id="Email" class="form-control" /> 
      <span asp-validation-for="Email" class="text-danger"></span> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label asp-for="UserName" class="col-md-2 control-label"></label> 
     <div class="col-md-10"> 
      <input asp-for="UserName" id="UserName" class="form-control" /> 
      <span asp-validation-for="UserName" class="text-danger"></span> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label asp-for="Password" class="col-md-2 control-label"></label> 
     <div class="col-md-10"> 
      <input asp-for="Password" id="Password" class="form-control" /> 
      <span asp-validation-for="Password" class="text-danger"></span> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label asp-for="ConfirmPassword" class="col-md-2 control-label"></label> 
     <div class="col-md-10"> 
      <input asp-for="ConfirmPassword" class="form-control" /> 
      <span asp-validation-for="ConfirmPassword" class="text-danger"></span> 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      @*<button type="submit" class="btn btn-default" id="btn1">Register</button>*@ 

      @*<input type="button" id="btnGet" value="Get Current Time" />*@ 
      <input type="submit" name="Sumbit" onclick="SaveCity(); return false;" /> 
      @*<a class="delete-link" h>Delete</a>*@ 
     </div> 
    </div> 
</form> 

這裏是型號:

public class UserAccount 
{ 
    [Key] 
    public int UserID { get; set; } 

    [Required(ErrorMessage ="First Name Required")] 
    public string FirstName { get; set; } 

    [Required(ErrorMessage ="Last Name Required")] 
    public string LastName { get; set; } 

    [Required(ErrorMessage ="Email Required")] 
    [DataType(DataType.EmailAddress)] 
    public string Email { get; set; } 

    [Required(ErrorMessage ="User Name Required")] 
    public string UserName { get; set; } 

    [Required(ErrorMessage ="Password Required")] 
    [DataType(DataType.Password)] 
    public string Password { get; set; } 

    [Compare("Password",ErrorMessage ="Password Not Match")] 
    [DataType(DataType.Password)] 
    public string ConfirmPassword { get; set; } 
} 

任何一個有想法比PLZ幫我...

+0

在什麼課你' AjaxMethodTemp'是?它從哪個類繼承而來?你是否使用MVC或Web API作爲你的底層框架?我想你是混合其中兩個 – SergGr

+0

AjaxMethodTemp是HomeConroller方法,我使用MVC。 –

+0

你有任何想法如何在mvc中使用ajax調用保存數據? –

回答

0

試試這個,

var UserAccount{ 
    Password: "abc", 
    UserName: "abc", 
    Email: "[email protected]", 
    FirstName: "abc", 
    LastName: "abc" 
}; 

$.ajax({ 
     type: "POST", 
     url: "/Home/AjaxMethodTemp",      
     data: { user: UserAccount},   
     success: function (data) { 
     alert("SUCCESS"); 
     }  
    }); 
+0

您可以使用'JSON.stringify({...});'' –

相關問題