2013-05-13 21 views
0

我试图在Webmatrix中使用@Renderpage()方法呈现.html网页,但该方法不支持.html扩展名。我猜这个方法只支持cshtml扩展。有没有一种方法可以在我的网站上动态呈现html页面(Webmatrix)。我不想使用iframe,因为我肯定会遇到我的jquery文件问题。动态呈现webmatrix上纯净的.html页面

我尝试了一些我觉得很安全但感觉不安全的东西。我决心阅读HTML文件并手动使用它注入到DOM:

Array html = null; 
var mypage = Server.MapPath(page); 
if(File.Exists(mypage)){ 
    html = File.ReadAllLines(mypage); 
} 

读取文件后.....我把它注入到DOM

 <div class="s_content s fontfix left s_content2 downdown"> 
      @foreach (var data in html) { 
       <text>@Html.Raw(data)</text> 
      } 
     </div> 

这一切都运行在编译时间之前,页面创建渲染.....我试图通过尝试在HTML文件中注入服务器端C#代码的一些安全措施,但没用。让我感到安全至少。这有风险吗?这种替代方案可能面临的威胁是什么?我希望我仍然可以从房子中选择合适的解决方案。不过谢谢。

回答

0

假设@Renderpage()不支持HTML文件,为什么不尝试Jquery.load或Ajax。有很多基于html内容动态加载的教程。

+0

@abdhoms .....你的建议有两个问题。在document.ready()之后,Jquery加载会花费我另一个http请求。其次,我会基于事件来讨论我的对象绑定问题。它像普通的问题一样克隆你的生活。虽然谢谢!我需要一个服务器端解决方案。 – 2013-05-14 13:16:18

0

我做了类似的事情,但我没有使用@Renderpage或html文件。相反,我使用“onclick”事件和一个打开cshtml文件的javascript函数。您只需在hmtl部分的主cshtml文件中添加此脚本和Java脚本函数即可。点击

<a onclick=openWin("my_window",700,850);>Open when clicked</a> 


<script type="text/javascript"> 
    function openWin(url, width, height) 
    { 
     myWindow=window.open(url,'_blank','width='+width+',height='+height); 
     myWindow.focus(); 
    } 

希望这有助于何时会在当前目录下名为my_window.cshtml打开一个文件!

+0

@Thomas ....你的建议会花费我另一个http请求,并且在注入html页面后,我的对象事件绑定将失败。第三,我需要结果页面就像@ rendersection(),而不是在事件的单独空白页面上。在编译页面时,我需要一个服务器端解决方案 – 2013-05-14 13:21:51