在我正在开发的应用程序中,我想允许用户上传静态HTML页面来替换默认的“用户配置文件”MVC View页面。这可能吗?也就是说,用户上传的HTML页面将完全用完MVC,并且可以包含自己的CSS链接等。
想法?建议?
解决方法
显然,.net MVC框架处理已经存在于图像/ css / js等的静态内容。这只是一个扩展(路由?)的问题,将.html文件直接传递到IIS。再加上一些重写,使漂亮的url应该做的伎俩。
不过,我非常非常警惕,允许用户生成的内容以原始HTML上传的形式,因为您正在离开非常宽敞的门。最好的是,你将会满足人们的垃圾邮件/色情/广告页面。最糟糕的是,您将为人们提供上传跨站点脚本攻击的渠道,并可能上传恶意内容来破坏您的网站。您可以轻松地将现有的表单存储在您的网站上,将一堆垃圾硬编码到其中,并将其从主页中删除,并打破整个事物。
至少您应该解析上传的内容,将其减少到一小段内容,然后将其包装在您自己的内容中。我个人更倾向于向用户提供一个好的所见即所得编辑器来编辑单一内容 – 任何值得它的盐的编辑应该为您提供关于它包含/不包括哪些元素的消毒。然后将此内容片段存储在数据库/光盘上,并通过标准MVC控制器路由请求主页,并加载该内容。
编辑 – 为您请求示例
您应该能够向路由添加一个忽略规则 – 可能已经有这些示例已经破解打开了Global.asax文件 – 您将要调用route.IgnoreRoute方法:
routes.IgnoreRoute("UserPages/{*path}");
应该让IIS处理对yourwebsite.com/UserPages/aUser/homepage.html的所有请求 – 您还可以使用通配符片段/约束更漂亮的解决方案