使用Response.WriteFile而不是用户控件

时间:2012-06-09 01:53:36

标签: asp.net

我有一个大的html文件,我想分开。我设法拆分它并将每个部分放在一个htm文件中。结果我的结构现在看起来像:

enter image description here

注意文件夹中的所有文件都只是Default.aspx页面特有的。我喜欢把我的代码分成几个部分;我发现以这种方式编程更容易。

无论如何,当我这样做时:

    <%   
        Response.WriteFile("_Menu.htm");        
    %>

创建一个不同的输出,如果我去哪里_Menu.htm复制整个内容并将其粘贴在那里?我知道我可以为每个文件创建一个用户控件。但如果我这样做,我将不得不在每个文件的页面根目录创建一个页面指令,而且我只需要放置静态内容,我不需要调用aspx页面。为什么Response.WriteFile包含我在文件中没有的东西。例如,每当我有一个段落时,它就会放置'''标记。

修改

当我计划重用html时,我使用用户控件。在这种情况下,我只是将一个页面分成几个。我想将每个块的内容放在一个单独的文件中。

编辑2

这样做的:

    <%   

        //Response.WriteFile("_Menu.htm");

        Response.Write(System.IO.File.ReadAllText(@"A:\Users\Antonio\Dropbox\VisualStudio Projects\Websites\Boat\Boat\MasterPages\User\_Menu.htm"));        
    %>

效果很好。为什么Response.WriteFile包括“(段落)”在开头!?

1 个答案:

答案 0 :(得分:0)

创建Response.Write方法:

创建以下扩展方法globaly,以便您的所有页面都可以访问它:

using System.Web.UI;

public static class StaticExtensionMethods
{
    public static void Include(this System.Web.UI.Page Page, string path)
    {
        Page.Response.Write(System.IO.File.ReadAllText(Page.Server.MapPath(path))); 
    }



}

然后做:

    <%   
        this.Include("_Menu.htm");
    %>