ASP.NET Core - 当前上下文中不存在名称“JsonRequestBehavior”
Posted
技术标签:
【中文标题】ASP.NET Core - 当前上下文中不存在名称“JsonRequestBehavior”【英文标题】:ASP.NET Core - The name 'JsonRequestBehavior' does not exist in the current context 【发布时间】:2016-07-25 22:38:28 【问题描述】:在我的 ASP.NET Core (.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 的 cmets:
JsonRequestBehavior
在 ASP.NET Core 1.0 中已被弃用。
在下面@Miguel 接受的响应中,动作方法does not
的return type
特别需要是JsonResult 类型。 ActionResult 或 IActionResult 也可以。
【问题讨论】:
查看JsonRequestBehavior 的文档。 Namespace 是您需要在文件顶部的using
语句之后放置的内容,而 Assembly 是您必须包含作为项目参考的内容.
@SamIam 感谢您提供 MSDN 链接。我正在使用 ASP.NET Core 1.0 (.NET Framework) 项目模板,当我搜索 Reference-->Add 对话框时,该模板似乎没有可用的 System.Web.MVC 程序集。有什么建议或解决方法吗?
@nam AFAIK, JsonRequestBehavior
已在 ASP.NET Core 1.0 中弃用。
【参考方案1】:
返回 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);
【讨论】:
它不需要返回类型为JsonResult
。 ActionResult
或 IActionResult
也可以。
@NateBarbettini 谢谢。我已将您的 cmets 添加到我帖子的额外 UPDATE
部分。
因为 JsonResult 实现了 ActionResult :)【参考方案2】:
在代码中,将 To JsonRequestBehavior.AllowGet
替换为 new Newtonsoft.Json.JsonSerializerSettings()
和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());
【讨论】:
【参考方案3】:有些时候你需要用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 );
【讨论】:
以上是关于ASP.NET Core - 当前上下文中不存在名称“JsonRequestBehavior”的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core Web API - 当前上下文中不存在名称“jsonString”
ASP.NET Core 中的 Server.MapPath 等价物是啥?
asp.net中当前上下文中部存在ConfigurationManager怎么办
Update-Database 命令在 ASP.Net Core / Entity Framework Core 中不起作用,因为数据库中的对象已经存在