2013-03-27 89 views
0

问题是:plataform为客户端生成报告。但是每个客户报告中都有相同的信息,但是具有不同的布局。 每次客户端想要更改布局时,我都不想生成部分视图,重新编译和发布解决方案。ASP.NET MVC渲染从字符串到generete的视图报告

我想在数据存储中存储一个代表分部视图(报表)的字符串,并在运行时将其传递给视图并进行呈现。

我一直在寻找一些解决方案,但涉及到有部分视图文件。 文章(http://www.umbraworks.net/bl0g/rebuildall/2009/11/17/ASP_NET_MVC_and_virtual_views)给出了一个理念,但在这种情况下,客户端总是访问相同的URL(例如〜/ Reports/SomeReport/2,其中2是客户端拥有的对象的ID)客户端并且该对象是一个客户端,许多对象)。

我该如何解决这个问题?

在此先感谢

回答

1

编辑:四处移动RazorEngine评论的答案,这似乎是更相关。

对于动态模板(例如,从数据库中检索模板内容然后绑定到模型),看起来RazorEngine适用于此用例。


人丁原始HTML [nkvu - 刚刚离开这里历史的目的为“原始”,导致正确的响应不正确的响应]

如果你有一个HTML字符串,你只是想要显示在屏幕上,那么你可以使用Html.Raw()。这里是一个旧的example,但它应该说明Raw()如何工作。对不起,如果我误解了你的用例。

但是,作为一种良好的做法,您应该确保您测试/防御由于您直接呈现HTML而可能出现的各种注入攻击。我会尝试找到一些链接,供您考虑&更新此响应时,我做

+0

感谢您的想法。但我在说明中失败了。 该视图具有与数据库中的数据关联的模型。 HTML不是静态的。 我想将模型传递给视图并进行渲染。视图(布局)可以更改。 – joaoasrosa 2013-03-27 17:31:44

+0

好的,我想我明白了。也许像[this](http://razorengine.codeplex.com/)项目可以帮助你从数据库检索视图/模板字符串? (在我看到的例子中,为了简单起见,它们只是在代码中初始化它,但没有理由模板字符串不能来自数据库) – nkvu 2013-03-27 17:42:52

+0

你解决了我的问题! :) 谢谢! – joaoasrosa 2013-03-27 18:09:53

相关问题