【问题标题】:Get result from an ActionResult directly in the controller直接在控制器中从 ActionResult 获取结果
【发布时间】:2011-05-11 08:28:36
【问题描述】:

我希望能够获得ActionResult 将直接在我的控制器中生成的结果,用于调试目的。我该怎么做?

类似:

public ActionResult Parts(string id)
{
    var parts = _repository.GetParts(id);
    var action = Json(parts);

    var generatedJson = XXXXX;

    return action;
}

【问题讨论】:

    标签: asp.net-mvc jsonresult


    【解决方案1】:

    出于调试目的,您肯定希望使用诸如FireBugFiddler 之类的调试工具,但如果您坚持污染在调试模式下修改源代码,您可以查看JavaScriptSerializer 类(由JsonResult 类在内部使用):

    var generatedJson = new JavaScriptSerializer().Serialize(parts);
    

    【讨论】:

    • 污染性评论是不必要的,因为您不知道我如何/为什么需要它或我的代码一般看起来如何。
    • @jgauffin,这是正确的,也是在问题中提到它的充分理由。这将避免此类 cmets,甚至可能针对您的场景提出不同且更适合的答案。
    • 恕我直言,这根本不相关。我的问题非常具体,应该足够了。如果我想要替代品,我会问不同的问题。如果您想告知新用户所需的解决方案可能不是正确的,我会理解。
    【解决方案2】:

    由于您要返回 Json,并且我假设您想查看结果,您可以在 FireFox 中使用 json 查看器插件,jsonview。至少我是这样做的。

    如果是其他原因,请具体说明您要做什么。

    【讨论】:

    • 没有。我想在控制器中获取 json 作为字符串
    【解决方案3】:

    对结果调用 ExecuteResult。

    但如果您想检查它返回的 json,请使用浏览器调试工具以及一些 json 查看器插件。

    【讨论】:

      【解决方案4】:

      您也可以使用 NLog 之类的东西并将其绑定到 global.asax 中的 ILogger。此后,您可以暂时将任何与 json 相关的控制器操作发送到日志文件以供以后检查。

      另一种方法是使用动作过滤器并装饰您想要捕获的动作(这些可以保存在日志文件或其他一些可视化渲染设备中)。有一个很好的例子,你可以在这里适应你的目的:

      http://binary-studio.com/blog/technical-blog/asp-net-mvc-custom-action-filters/

      希望这会有所帮助..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-12
        • 1970-01-01
        • 1970-01-01
        • 2014-04-07
        • 1970-01-01
        • 2020-08-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多