我有一个MVC 6项目,其中使用Fiddler来测试Web API。如果我采取以下控制器动作,该动作使用EntityFramework
7返回List。然后,HTML将呈现良好。
[HttpGet("/")]
public IActionResult Index()
{
var model = orderRepository.GetAll();
return View(model);
}
但是,当我尝试返回Json响应时,却收到502错误。
[HttpGet("/")]
public JsonResult Index()
{
var model = orderRepository.GetAll();
return Json(model);
}
关于对象为何未正确序列化为json的任何想法?
首先,您可以使用IEnumerable<Order>
或IEnumerable<object>
作为return类型来代替JsonResult
and
return just
orderRepository.GetAll()
。我建议您阅读有关其他信息的文章。
关于Bad Gateway的另一个错误。尝试将Newtonsoft.Json
最新版本8.0.2 添加到依赖项中package.json
并使用use
services.AddMvc()
.AddJsonOptions(options => {
options.SerializerSettings.ReferenceLoopHandling =
Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});
顺便说一句,您可以重现错误“
HTTP错误502.3-错误的网关”,如果您只是在工作代码的return语句上设置断点并等待足够长的时间,则将描述该错误。因此,您很快会在许多常见错误上看到错误“
HTTP错误502.3-错误的网关”。
您可以考虑给我们更多有用的序列化选项。例如
services.AddMvc()
.AddJsonOptions(options => {
// handle loops correctly
options.SerializerSettings.ReferenceLoopHandling =
Newtonsoft.Json.ReferenceLoopHandling.Ignore;
// use standard name conversion of properties
options.SerializerSettings.ContractResolver =
new CamelCasePropertyNamesContractResolver();
// include $id property in the output
options.SerializerSettings.PreserveReferencesHandling =
PreserveReferencesHandling.Objects;
});
为什么我不能在这里回复一个糟糕的请求?在其他例子中,它工作得很好。
你好,我是拉威尔的新手,也许这对你们来说太傻了。在laravel 8中,路由web。php我创建了一条如下的路线: 我想问的是,我们也可以从回调视图返回控制器吗?所以在路由 /editprofile中,第二个参数不是'App\Http\Controller\SiteController@edit_profile',而是一个回调函数,如路由'/home'。 但是它返回错误哈哈。假设我不想用__con
目标是打印标签的当前文本。标签在整个程序中不断变化,使用当前的方法,我只能检索标签的初始化值。 我用来检索控制器实例的内容:
如果可以从Spring返回,我很好奇 这样做可以吗?我试过了,Spring返回的不是流的值。 我应该继续返回
问题内容: 我正在做一个MVC应用程序,我需要从控制器传递json对象才能查看。 上面的代码是我在控制器中使用的,现在当我部署视图页面时,在浏览器中打开一个下载对话框,打开文件时,它会为我提供json对象作为我需要的格式。 现在我想返回我的视图页面,也想访问视图页面中的json对象。我怎样才能做到这一点。 问题答案: 在执行此操作时,您明确地告诉MVC 不要使用view 并提供序列化的JSON数据
因此,在这种情况下,我想配置Spring/Jackson返回{}(2字节)。 我已经考虑过在调用中返回new Object(),否则将返回void,但IMO这是一个肮脏的sout,必须有更好的东西。