我们正在调查将我们的自定义.net webforms CMS移植到MVC。
我们当前CMS的一个功能是用户能够将模块(实际上只是.net用户控件)添加到富文本编辑器中。然后将这些模块解析为容器。
plc_controls.Controls.Add(Page.ParseControl(description));
其中'description'是数据库中包含一些普通页面内容的字段,并且可以在标记中包含一个或多个用户控件。
如何在mvc框架中容纳这种东西?我对MVC不太熟悉,不知道从哪里开始 - 此时我们只是在调查这一举动是否有意义。
使用示例编辑
目前,用户可以输入如下所示的标记:
<p>Some text</p>
<cms:facilities id="facilities" membertypes="2,3,4" runat="server" />
<p>Some more text</p>
这存储在名为“Description”的单个数据库字段中,在我们的webforms CMS中,我将此描述解析为控件容器,如上所述。 cms:facility是一个Web用户控件,它被加载到web.config的pages / control部分。该控件只呈现两个段落标记之间的设施列表。
答案 0 :(得分:0)
根据我在上面的评论中已经说过,我会给你一个正式答案。也许这会让事情变得更加清晰。
例如,你可以发布这样的内容(使用修改后的BBCode *解析器):
[p]Some text[/p]
[facilities id="facilities" membertypes="2,3,4"]
[p]Some more text[/p]
事实上,这是更安全然后发布带有ASP.NET服务器标签的#34;&#34;。我相信一些黑客可以使用你当前的富编辑解决方案来发布可以探索一些客户端或服务器端后门的HTML代码,但也许我错了......
同样,不能使用您在ASP.NET WebForms版本中使用的相同方法 - ASP.NET MVC中没有服务器标记这样的东西。
当然,这比以前的ASP.NET WebForms解决方案复杂得多。但AFAIK是你应该如何在ASP.NET MVC中实现它的(除非有一些第三方库能够做到这一点,我不知道)。
另外,对不起,如果我从一开始就没有说清楚 - 英语不是我的第一语言,而且我在解释这整个概念方面遇到了一些麻烦。
*有关.NET中BBCode的实现,请参阅Codekicker.BBCode。事实上,AFAIK可以与markItUp!集成 - 这将为您提供一个几乎完整的丰富编辑器解决方案,免费。