如何将消息插入取决于会话值的视图。 ASP.NET MVC。最佳实践

Posted

技术标签:

【中文标题】如何将消息插入取决于会话值的视图。 ASP.NET MVC。最佳实践【英文标题】:How to Inserting message into View that depends on session value. ASP.NET MVC. Best practice 【发布时间】:2010-06-02 05:50:39 【问题描述】:

用户必须填写多步骤问卷网络表单,步骤消息取决于用户一开始选择的选项。消息存储在 web.config 文件中。我使用 asp.net mvc 项目、强类型视图并将业务逻辑与静态类中的控制器分开。我不想让业务逻辑依赖于 web.config。 好吧,我必须根据会话值将消息插入到视图中。

至少有 2 个选项来实现这个:

    视图模型具有填充在控制器/业务逻辑中并在视图中呈现的属性,如<%: Model.HelpMessage1 %>。我必须将 web.config 值从控制器传递到 businessLogic,这使得业务逻辑方法签名过于复杂。

    创建从视图调用的静态助手类,如<%: ViewHelper.HelpMessage1(Model.OptionChosenAtTheVeryBeginning) %>。但在这种情况下,要显示的逻辑似乎分为两类:业务逻辑和 viewHelper。

你有什么建议?

提前感谢您!

【问题讨论】:

请务必使用 asp.net-mvc 标记您的 MVC 相关问题,因为 asp.net 通常用于 ASP.NET 网络表单。 【参考方案1】:

正如 Adrian 所指出的,您的问题属于业务领域。为什么不获取消息,并将其与其他数据/模型一起放入视图模型中。

【讨论】:

我使用 WebSiteConfig 静态类来访问配置值,例如: WebSiteConfig.Current.Message.Message1 ... 可以在 BusinessLogic 和此类之间建立依赖关系吗?或者我应该以某种方式重构它?【参考方案2】:

决定必须显示哪些消息和/或如何从这些消息中组装模型似乎是您业务逻辑的一部分。将消息存储在业务层中并让业务层生成带有填充消息的模型怎么样?

【讨论】:

我使用 WebSiteConfig 静态类来访问配置值,例如: WebSiteConfig.Current.Message.Message1 ... 可以在 BusinessLogic 和此类之间建立依赖关系吗?或者我应该以某种方式重构它? Web.config 不是存储此类字符串的正确位置。您应该为此使用字符串资源:msdn.microsoft.com/en-us/library/3xhwfctz%28VS.80%29.aspx。我会为所有消息创建一个资源文件并将其放在业务层中。 感谢您的耐心等待。好吧,我使用外部文件(web.config)来让有经验的用户修改消息(站点没有管理部分)。我是否正确理解在重新编译网站项目之前无法编辑资源? 没错。但是,您可以将资源放在 XML 文件中,然后通过 Linq to XML 从业务层访问该文件。这是一件非常容易实现的事情。

以上是关于如何将消息插入取决于会话值的视图。 ASP.NET MVC。最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 网格视图与列表视图

如何将消息从我的存储库类返回到我的控制器,然后返回到我在 asp.net-mvc 中的视图?

电话间隙 HTML 应用程序可以与 asp.net Mvc Web 服务器建立会话吗

ASP.net MVC - 如何在各种视图中保留模型

如何在 ASP.NET MVC 视图中返回当前操作?

将 asp.net 表单视图更改为从另一个页面插入模式