【问题标题】:Ajax response error on save button保存按钮上的 Ajax 响应错误
【发布时间】:2016-12-19 21:41:21
【问题描述】:

我在这里保存表单字段中的数据,我想在我的列表页面中显示。但我无法获得清单。任何人都可以对此提出建议。

这是我的 list.cshtml 代码

var saveTrainingProgram = function () {

    console.log('in save');

    $.ajax({
        url: '/Affiliate/TrainingProgram/Save',
        type: 'POST',
        data: {
            trainingProgramName: ff.trainingProgramName.val(),
            colorCode: ff.colorCode.val()
        }
    }).done(function (response) {
        if (response.status === 'success') {



        } else {

        }


    }).fail(function (jqXHR, textStatus) {

        $.isLoading('hide');
    });


};


};

这是我的控制器代码:

[HttpPost]
[Authorize(Roles = "Affiliate")]
public ActionResult Save(string trainingProgramName, string colorCode)
{
    CbJsonResponse response = new CbJsonResponse();

    int errorCount = 0;
    List<string> errorMessages = new List<string>(5);


    if (string.IsNullOrEmpty(trainingProgramName))
    {
        errorCount++;
        errorMessages.Add("Error: The Training Program Name is required.");
    }

    if (string.IsNullOrEmpty(colorCode))
    {
        // This is not a required field, assign a default value.
        colorCode = CbConstants.TrainingProgramDefaultColorCode;
    }


    if (errorCount == 0)
    {
        Entities.TrainingProgram trainingProgram = new Entities.TrainingProgram();
        trainingProgram.Name = trainingProgramName;
        trainingProgram.ColorCode = colorCode;

   if (TrainingProgramRepository.Instance.SaveTrainingProgram(trainingProgram))
        {

            response.Status = "success";

            TrainingProgramListEntry listEntry = new TrainingProgramListEntry()
            {
                ID = trainingProgram.ID,
                Name = trainingProgram.Name,
                ColorCode = trainingProgram.ColorCode
            };

            // Include the list entry in the response.
            response.Data.Add(listEntry);
        }
    }
    else
    {
        response.Status = "failure";
        response.Meta.Add("errorCount", Convert.ToString(errorCount));
        response.Data.Add(errorMessages);
    }

    return Json(response, "application/json", System.Text.Encoding.UTF8, JsonRequestBehavior.AllowGet);
}

【问题讨论】:

  • 您的控制器是否返回正确的列表?你能从浏览器控制台看到正确的响应吗?
  • 错误发生在哪里确切?您的控制器方法是否接收到您期望从 ajax 函数获得的值?还是您的控制器方法内部发生了您不期望的事情?请说得更清楚,以便我们更有效率地提供帮助。

标签: c# jquery asp.net-mvc entity-framework entity-framework-6


【解决方案1】:

如果您使用 ViewModels,您可以轻松克服这个问题。尝试如下所示,让我们知道结果...

public class MyVmModel
{
    public string TrainingProgramName { get; set;}
    public string ColorCode { get; set;}
    public string Status { get; set;}

}


[HttpPost]
[Authorize(Roles = "Affiliate")]
public ActionResult Save(MyVmModel myVm)
{
    //your code here

    myVm.Status= "your message here"
    return Json(myVm);
}

Ajax 的一部分:

$.ajax({
        url: '/Affiliate/TrainingProgram/Save',
        type: 'POST',
        data: {
            trainingProgramName: ff.trainingProgramName.val(),
            colorCode: ff.colorCode.val()
        }
        accept: 'application/json' //you have to give this here
})

【讨论】:

  • 公共类 TrainingProgramListEntry { [DataMember] public int ID { get;放; } [DataMember] 公共字符串名称 { 获取;放; } [DataMember] 公共字符串 ColorCode { get;放; } [DataMember] public string BackgroundColor { get { return ("background-color: " + ColorCode + ";"); } } 公共布尔活动 { 获取;内部集; } } }
  • 以上代码是viewmodel。你能建议我如何解决这个问题
  • 我已经完成了,但是我无法找到新数据行时出现同样的错误
  • 在浏览器的控制台窗口中调试它时发生了什么?是从服务器返回正确的消息还是什么?
  • 点击保存时,我们正在传递训练程序视图模型,默认 id 设置为 0 。因此出现错误,因为无法将值传递给被设置的标识列
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多