【问题标题】:MVC user format outputMVC 用户格式输出
【发布时间】:2011-01-24 23:39:44
【问题描述】:

我有一个 C# MVC 项目,允许用户选择输出数据的方式(即以 kmh/mph 为单位的速度,以 CST、EST 为单位的时间等,以 KMs、英里、米为单位的距离,赫克特斯等)。不是每次都跑回数据库来检索设置,而是在登录时将其填充到加密的 cookie 用户数据部分。我还使用服务存储库模式,其中我的服务在 BLL 中实现,在 BOL 中定义模型。我还将数据作为 JsonResults 返回(使用 NewtonSoft 库)。在不将此单元首选项信息传递到业务逻辑层的情况下,将数据转换为用户指定类型的最佳策略(在哪里以及如何)是什么?我最初考虑使用 customAttributes 并编写我自己的 CustomJsonResult actionResult,这将使用反射并生成 Json 字符串,但这需要我自己的对象遍历算法。我主要关心的是我想让我的应用程序无状态。

【问题讨论】:

    标签: c# asp.net-mvc format actionresult jsonresult


    【解决方案1】:

    我认为这种转换可以在映射层中执行,它将您的业务对象转换为传递给视图的视图模型。因此,控制器将查询业务层以检索模型,然后将查询存储在 cookie 中的用户首选项,并将这两个实体传递给映射层,映射层将根据用户区域设置执行必要的转换和格式化,并返回一个准备好将视图模型传输到强类型视图,该视图将简单地输出信息。

    另一种可能性是在您的视图中使用自定义 HTML 助手,该助手将获取模型值并根据存储在 cookie 输出中的用户偏好执行转换并输出格式化字符串。

    【讨论】:

    • 嘿达林,感谢您的洞察力,但是我将我的数据传递回不同的 ActionResult,即 JsonResult()、CSVResult() 等。因此,在发送之前我需要正确格式的数据它到这些默认方法。你是对的,如果我渲染到 html 视图,我可以使用静态辅助函数来做到这一点。但我不是:s
    • @Amit,那么我在映射层中执行转换的第一个建议仍然有效。
    猜你喜欢
    • 2015-11-27
    • 2018-02-10
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2017-03-25
    • 2015-04-22
    相关资源
    最近更新 更多