当前位置: 首页 > 知识库问答 >
问题:

在mvc5 API2中使用ajax错误函数返回字符串错误消息

漆雕皓轩
2023-03-14

我在mvc5中使用API2控制器,实现CRUD操作。在POST方法中,我有一个if语句,当if语句结果为false时返回BadRequest()。

[HttpPost]
    public IHttpActionResult CreateAllowance(AllowanceDto allowanceDto)
    {


allowanceDto.AllowanceID = _context.Allowances.Max(a => a.AllowanceID) + 1;
    allowanceDto.Encashment = true;
    allowanceDto.Exemption = true;
    allowanceDto.ExemptionValue = 0;
    allowanceDto.ExemptionPercentage = 0;
    allowanceDto.CreatedDate = DateTime.Now;
    allowanceDto.ModifiedDate = DateTime.Now;

    if (!ModelState.IsValid)
            return BadRequest();


    if (allowanceDto.MinValue >= allowanceDto.MaxValue)
        return BadRequest("Min value cannot be greater than max value");


        var allowanceInfo = Mapper.Map<AllowanceDto, Allowance>(allowanceDto);
        _context.Allowances.Add(allowanceInfo);
        _context.SaveChanges();

       // allowanceDto.AllowanceID = allowanceInfo.AllowanceID;
        return Created(new Uri(Request.RequestUri + "/" + allowanceInfo.AllowanceID), allowanceDto);


}

这是IF语句我需要显示字符串错误消息

if(allowanceDto.MinValue)

这是ajax调用:

     $.ajax({
                    url: "/api/allowances/",
                    method: "POST",
                    data: data
                })
           .done(function () {
         toastr.success("Information has been added 
                       successfully","Success");
           })
           .fail(function () {
               toastr.error("Somthing unexpected happend", "Error");


           })

我的问题是,当IF语句为false时,如何使用ajax显示BadRequest的字符串错误。

共有1个答案

梁丘烨
2023-03-14
return BadRequest(ModelState);

将向客户端返回一个JSON对象,其中包含验证失败的所有字段的详细信息。这是人们在这种情况下通常做的事情。它将包含您在模型的验证属性中定义的任何消息。

还可以在返回模型状态之前将自定义消息添加到模型状态,例如:

ModelState.AddModelError("Allowance", "Min value cannot be greater than max value");
return BadRequest(ModelState);

响应将如下所示,例如:

{
  "Message":"The request is invalid.",
  "ModelState":{
    "Allowance":["Min value cannot be greater than max value"]
  }
}

要接收此响应,您的ajax调用需要非常轻微地修改

  $.ajax({
    url: "/api/allowances/",
    method: "POST",
    data: data
    dataType: "json" // tell jQuery we're expecting JSON in the response
  })
  .done(function (response) {
    toastr.success("Information has been added successfully","Success");
  })
  .fail(function (jqXHR, status, err) {
    console.log(JSON.stringify(jqXHR.responseJSON)); //just for example, so you can see in the console what the returned data is.
    toastr.error("Somthing unexpected happened", "Error");
  })
 类似资料:
  • 场景:用于编辑产品详细信息的HTML文档被编码为ISO-8859-1,并将POST数据发送到PHP文件(也被编码为ISO-8859-1)。这个PHP文件有mysql_real_escape_string-functions来清理输入。数据库/MySQL server字符集为UTF-8。问题是,当POST字符串中包含斯堪的纳维亚字母(ä,ö,å)时,mysql_real_escape_string返

  • 问题内容: 当尝试使用str_to_date()将我的Estimates表中的字符串日期值的列CreatedDate转换为mySQL日期格式时,我一直收到错误消息。我的数据列包含m/ d / yy格式的日期(例如:1/26/16或3/3/16)。 我跑了这个查询: mySQL返回此错误消息: 我的查询出了什么问题? 问题答案: 清理数据的通常策略如下: 然后,当您确信一切都正确转换后: 适当字段的

  • 问题内容: 我有一个字符串“ ́aúlt”,我想根据字符位置等获得操纵的长度。问题在于第一个数字被计数两次,或者我猜数字在位置0而数字在位置1。 Python中是否有任何可能的方式来将像“ ́”这样的字符表示为1? 我正在将UTF-8编码用于输出的实际代码和网页。 编辑:关于为什么我需要这样做的一些背景。我正在做一个项目,该项目将英语翻译成塞内卡(一种美洲原住民语言),而„ ́出现了很多。某些单词

  • 问题内容: 不知道出了什么问题,但是我从chrome控制台收到了此错误: 通过此JavaScript: 我不确定启动.ajax的方式是否有问题,或者jquery的实现是否正确。我觉得是这样的。有什么想法吗? 编辑:这是上面脚本附带的html 问题答案: 您正在使用jQuery的苗条版本。它不支持ajax调用。用 代替它。 苗条的身材 有时您不需要ajax,或者您更喜欢使用许多专注于ajax请求的独

  • 问题内容: 我正在使用带有jQuery的ASP.NET MVC。我有以下MVC操作,返回成功页面的一部分。关于“应用程序错误”,我不确定要在客户端正确处理它的方式发送什么: 以下是我的jQuery ajax调用。请注意,我正在检查数据长度以确保没有错误。请建议我这样做的更好方法。 问题答案: 我会在您的ajax调用设置中添加一个错误函数。让服务器确定要显示的错误消息,然后将其传递给ajax错误处理

  • 这是一个更长的编码挑战的一部分-其中一部分涉及“翻转”输入数字的数字(即1234变为4321),并在适用时删除前导零。 下面,我写了实现这一点的flipOpp方法。大多数时候,它工作得很好。但有时,我会收到一个错误,因为最后一个数字变成了破折号(“-”),显然是整数。如果其中一个数字是破折号,parseInt()方法将不起作用! 知道这是什么原因吗?还有,有没有更简单的方法来翻转一个int的数字?