【问题标题】:Returning different types from controller从控制器返回不同的类型
【发布时间】:2014-04-11 18:55:58
【问题描述】:

有没有办法使用 ajax 将模型返回给客户端? 在 mvc 控制器中,我正在尝试这样做;

MyController : Controller
{
    public MyObjectType GetNew()
    {
        return new MyObjectType();
    }
}

返回给客户端的只是“AssemblName.MyObjectType”。 也许有一些方法可以覆盖,但我不知道整个框架。

【问题讨论】:

  • 你能返回一个 JSON 对象吗?
  • 如果给定的答案对您不起作用,您将需要提供更多详细信息。如果您想在浏览器中使用此对象,则需要将其序列化为 XML 或 JSON 或您自己设计的某种字符串表示,只有 没有其他方法。要在视图中使用此对象,则需要将其粘贴在 ViewBag 中,在 Razor 中,您可以或多或少地处理该对象以正常方式
  • 很高兴能详细说明您对所寻找的解决方案类型所做的决定。

标签: c# asp.net-mvc controller action complextype


【解决方案1】:

正如 Patrick 建议的那样,您可以返回 JsonResult。否则 ApiController 将为您序列化。

MyController : ApiController
{
    public MyObjectType GetNew()
    {
        return new MyObjectType();
    }
}

【讨论】:

  • 我不想返回 JsonResult 也不想使用 ApiController 因为它在发布时只接受 1 个参数,所以将参数包装在对象中以接收数据不是我的交易。
  • 你有什么不想做的理由吗?您希望您的客户如何接收数据?
  • 您可以轻松地在一个 Action 中传递多个参数。
  • 嗯,当返回未知类型时,mvc 控制器调用“ToString”方法。但是当它是数组时,控制器只返回它的类型。
  • 当你把它包装在Json() 电话里?
【解决方案2】:

您可以将对象序列化为 JSON 并返回 JsonResult。在客户端,您可以再次对其进行反序列化。

您应该调用 Json(object) 方法将您的对象序列化为 JSON。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 2017-05-18
    • 2016-09-11
    相关资源
    最近更新 更多