我正在开发现有的 MVC3 应用程序。通常在处理 MVC3 项目时,我希望在视图 ( .cshtml
) 中看到 HTML 和 MVC3 标记。
但是,使用此应用程序,每个视图仅调用XSLTEngine.Raw()
. 查看这段代码,这是对 XSL 文件的调用,这些文件包含类似 XML 的语法,其中包含看似呈现为 HTML 的元素(可能是通过该XSLTEngine.Raw()
方法)。
将此内容存储在 XSL 文件中而不是视图文件中的 HTML/MVC3 语法有什么好处?
我正在开发现有的 MVC3 应用程序。通常在处理 MVC3 项目时,我希望在视图 ( .cshtml
) 中看到 HTML 和 MVC3 标记。
但是,使用此应用程序,每个视图仅调用XSLTEngine.Raw()
. 查看这段代码,这是对 XSL 文件的调用,这些文件包含类似 XML 的语法,其中包含看似呈现为 HTML 的元素(可能是通过该XSLTEngine.Raw()
方法)。
将此内容存储在 XSL 文件中而不是视图文件中的 HTML/MVC3 语法有什么好处?
很难说。应用程序可能正在执行 XSLT 非常适合的工作(它是一种针对某些任务进行了优化的语言);或者它可能正在重用 XSLT 中已经存在的代码;或者它可能是由具有 XSLT 技能但没有时间学习不同技术的人编写的;或者它可能是由对 XSLT 有宗教信仰的人编写的(许多程序员对特定的编程语言有宗教信仰,我的意思是他们根据审美标准而不是科学标准来选择它;XSLT 也不例外)。
这些答案与您对“为什么 X 用 L 写成?”形式的任何问题的答案非常相似。其中 X 是软件组件,L 是编程语言。
如果这是使用 XML 作为数据源的旧应用程序的一个端口,那么为了转换为 MVC,最简单的方法是重用 XML 数据并使用 XSLT 对其进行转换。
老实说,移植这样的应用程序毫无意义(本质上,它是不同框架上的同一个应用程序),除非再也找不到熟悉旧技术的开发人员。
也许目的是为终端客户端平台/设备提供更广泛的支持?
尽管您可能没有使用习惯的传统 MVC 功能,但您仍然可以使用控制器 - 我认为这非常整洁,并且可以轻松处理(和组织)页面请求/响应。更不用说对参数映射的强大内置支持(以及可能的模型绑定,但不确定如何/是否可以与您的 XSL 一起使用)
刚刚快速浏览了这个简短的演示文稿,它强调了 XSLT 优于 HTML 的一些主要优点 - 看看吧!