【问题标题】:AJAX Post to ASP.NET core MVC 6 Controller action method and parameters are nullAJAX 发布到 ASP.NET 核心 MVC 6 控制器操作方法和参数为空
【发布时间】:2017-07-20 06:24:57
【问题描述】:

但是,在控制器中,参数始终为 null/默认值。请在下面查看我的代码,如果我犯了愚蠢的错误或其他什么,请告诉我。

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: "abc@gmail.com",
                    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; }
}

任何人有想法比请帮助我...

【问题讨论】:

  • 您的AjaxMethodTemp 属于哪个班级?它继承自哪个类?您是否使用 MVC 或 Web API 作为您的底层框架?我猜你正在混合其中两个
  • AjaxMethodTemp 是 HomeConroller 方法,我使用 MVC。
  • 你知道如何在 mvc 中使用 ajax 调用来保存数据吗?
  • 当您尝试使用JSON.stringify({...}); 时会发生什么?
  • JSON.stringify({...}) 在我尝试您的代码时能够发布值。

标签: jquery json asp.net-core-mvc asp.net-core-1.0


【解决方案1】:

试试这个,

var UserAccount{
    Password: "abc",
    UserName: "abc",
    Email: "abc@gmail.com",
    FirstName: "abc",
    LastName: "abc"
};

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

【讨论】:

  • 你可以试试JSON.stringify({...});
猜你喜欢
  • 2016-05-28
  • 2019-01-26
  • 2019-03-30
  • 1970-01-01
  • 2011-05-06
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多