我必须构建一个xml输出,该输出表示为放置在视图中的弹性图表构建的数据。 我有几个选择:
让控制器创建xml(使用来自数据库的数据),并将其返回到实际上什么都不做的视图,因为一切准备就绪。
从数据库中强烈键入数据模型的视图,并在视图中以声明方式呈现xml。
创建一个Html扩展方法,该方法将包含创建xml并在视图上使用它的逻辑。
就分离关注而言,最佳选择是什么? 在未来,我不希望xml结构有很多变化,可能时不时。 我倾向于选择选项1,因为它更容易测试,我觉得控制器准备xml数据更舒服。
答案 0 :(得分:0)
我会选择1号选项,因为我觉得它最适合MVC模式。根据某些数据模型创建XML文件不是View的责任。这是业务逻辑,因此在控制器中更好。
同样重要的是,如果您让控制器创建xml文件,您可以为它创建一个单元测试,断言输出xml是有效的,包含所有必需的节点,等等。
答案 1 :(得分:0)
选项2是最好的。您的模型具有数据,您的控制器会询问它并将其提供给视图。该视图只有一个标记来说明它的去向。那对我来说是分离的关注点。
看到Razzie的回答,我也喜欢1,我想模型必须提供一些方法将一些实体类(你的图表结果)序列化为xml,以便你的强类型视图能够制作使用它。
无论如何,我希望答案有所帮助,基本上我不认为3是非常好的。 : - )
答案 2 :(得分:0)
我想说这取决于你更喜欢什么,因为选项1和2都是可行的。人们会说选项1很好,因为你可以使用XmlWriter来确保你有效的xml被返回,人们会说选项2是有效的,因为mvc就是完全控制你视图中呈现的内容(这可以是xml)。
但是,我个人会在选项1中使用变体来保持功能独立于控制器,并将其作为一个独立的实用程序方法,它接收数据并输出xml。这将更容易测试,但如果将来需要,也可以从代码中的其他位置调用。除此之外,它还可以使控制器中的代码更清晰。
我同意马克的观点,我认为选项3不是一个好方法。
这只是我的想法,希望这会有所帮助: - )