ASP.NET核心-名称';JsonRequestBehavior';在当前上下文中不存在

本文关键字:上下文 不存在 JsonRequestBehavior 核心 NET ASP -名 | 更新日期: 2023-09-27 17:58:32

在我的ASP中。NET核心(.NET Framework)项目,我在下面的控制器操作方法上得到了以上错误。我可能缺少什么?或者,有什么解决办法吗?:

public class ClientController : Controller
{
    public ActionResult CountryLookup()
    {
        var countries = new List<SearchTypeAheadEntity>
        {
            new SearchTypeAheadEntity {ShortCode = "US", Name = "United States"},
            new SearchTypeAheadEntity {ShortCode = "CA", Name = "Canada"}
        };
        
        return Json(countries, JsonRequestBehavior.AllowGet);
    }
}

更新

请注意以下来自@NateBarbettini的评论:

  1. JsonRequestBehavior在ASP中已被弃用。NET核心1.0
  2. 在下面接受的@Miguel的响应中,操作方法does notreturn type特别需要是JsonResult类型。ActionResult或IActionResult也有效

ASP.NET核心-名称';JsonRequestBehavior';在当前上下文中不存在

返回Json格式的数据:

public class ClientController : Controller
{
    public JsonResult CountryLookup()
    {
         var countries = new List<SearchTypeAheadEntity>
         {
             new SearchTypeAheadEntity {ShortCode = "US", Name = "United States"},
             new SearchTypeAheadEntity {ShortCode = "CA", Name = "Canada"}
         };
         return Json(countries);
    }
}

在代码中,它用new Newtonsoft.Json.JsonSerializerSettings() 替换To JsonRequestBehavior.AllowGet

它的工作原理与JsonRequestBehavior.AllowGet 相同

public class ClientController : Controller
{
  public ActionResult CountryLookup()
  {
    var countries = new List<SearchTypeAheadEntity>
        {
            new SearchTypeAheadEntity {ShortCode = "US", Name = "United States"},
            new SearchTypeAheadEntity {ShortCode = "CA", Name = "Canada"}
        };
    return Json(countries, new Newtonsoft.Json.JsonSerializerSettings());
  }
}

有些时候你需要用JSON返回消息,只需使用下面的JSON结果,不再需要jsonrequestbehavior,下面的简单代码可以使用:

public ActionResult DeleteSelected([FromBody]List<string> ids)
{
    try
    {
        if (ids != null && ids.Count > 0)
        {
            foreach (var id in ids)
            {
                bool done = new tblCodesVM().Delete(Convert.ToInt32(id));
                
            }
            return Json(new { success = true, responseText = "Deleted Scussefully" });
        }
        return Json(new { success = false, responseText = "Nothing Selected" });
    }
    catch (Exception dex)
    {
        
        return Json(new { success = false, responseText = dex.Message });
    }
}

你好,作为控制器中已接受的答案,您不必说

return Json(countries, JsonRequestBehavior.AllowGet);

只写

return Json(countries);

但是在ajax中的cshtml中,您应该以小写字母开头调用实体属性,例如:sshortCode和name。

$.ajax({
                method: "GET",
                url: `/ClientController/CountryLookup`
            }).done(function (result) {
                for (var i = 0; i < result.length; i++) {
                        var shortCode=result[i].shortCode;
                        var name= result[i].name;
                }
            })

我一直在将一个网站从asp.net移植到asp.net Core。我替换了:return Json(data, JsonRequestBehavior.AllowGet);具有Json(data, new System.Text.Json.JsonSerializerOptions());一切又开始运转了。