获取HTTP错误400.0 - 即使在使用JSON.stringify时,来自ASP .NET 4.6.1的错误请求

时间:2016-03-10 21:16:03

标签: jquery json ajax asp.net-mvc asp.net-ajax

这是每个部分。我已经阅读了有关使用JSON.stringify()的所有问题,但没有一个对我有用。我还尝试使用JSON.stringify()contentType: 'application/json' 而不是,但我得到了相同的400错误。

如果我将JavaScript AJAX保持不变,它可以在第一个示例中使用SendEmailAPI操作中列出的参数,但当我尝试使用> 时映射到视图模型。

ASP 4.61 MVC控制器,用于列出的每个参数。

public class HomeController : Place.Web.Mvc.BaseController
{
...
    [HttpPost]
    public ActionResult SendEmailAPI(string FormType, string FirstName, string LastName, string GLobalOrCampusId)
    {

        if (ModelState.IsValid)
        {
     ...

ASP 4.61 MVC控制器使用视图模型。

public class HomeController : Place.Web.Mvc.BaseController
{
...
    [HttpPost]
    public ActionResult SendEmailAPI(FormViewModel model)
    {

        if (ModelState.IsValid)
        {
     ...

jQuery AJAX

$.ajax({
    url: '/Home/SendEmailAPI',
    dataType: 'json',
    method: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({
        'FirstName': self.firstName(),
        'LastName': self.lastName(),
        'GlobalOrCampusId': self.globalOrCampusId(),
        'FormType': self.formType()
    }),
    success: function (data) {
        console.log('Success:', data);

    },
    error: function (data) {
        $('#tempErrorSpot').append(data.responseText)
        console.warn('Error:', data);

    }
})

ViewModel

namespace Place.Request.ViewModels
{
    public class FormViewModel : Place.Web.Mvc.BaseViewModel
    {
        [Display(Name = "Type of Form")]
        [Required]
        public string FormType { get; set; }

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

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

        [Required]
        [Display(Name = "Global ID or Campus ID")]
        public string GlobalOrCampusId { get; set; }  

        [Required]
        public string Department { get; set; }

        public string ResponseMessage { get; internal set; }
    }
}

1 个答案:

答案 0 :(得分:0)

情况是,在使用字符串参数尝试并使其工作后,我看起来更接近if (ModelState.IsValid)

在服务器上进行调试, ModelState.Values.5.Errors.0.ErrorMessage 显示"部门字段是必需的。" 问题显示!

事实证明我在 FormViewModel 上有[Required]个字段尚未填充(我还没有在UI上实现它们)。稍后在HttpStatusCodeResult(HttpStatusCode.BadRequest) ModelState.IsValid语句的逻辑分支中返回通用else