Asp.net 使用response.WriteFile而不是用户控件

Asp.net 使用response.WriteFile而不是用户控件,asp.net,Asp.net,我有一个大的html文件,我想分开。我已经设法将它分开,并将每个部分放在一个htm文件中。因此,我的结构现在看起来像: 请注意,文件夹中的所有文件仅限于Default.aspx页面。我喜欢把我的代码分成几个部分;我发现这样编程比较容易 不管怎样,为什么当我这样做: <% Response.WriteFile("_Menu.htm"); %> 这会创建一个不同的输出,如果我要去哪里_Menu.htm复制整个内容并粘贴到那里?

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

请注意,文件夹中的所有文件仅限于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在开头包含“(段落)”?

创建您的响应。写入方法:

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

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");
    %>


作为一个可能对您有所帮助的建议,我建议您不要制作所有相关的html文件,而应该将它们转换为web用户控件。它们可以重复使用,并且不需要输出您的文件。是的,我来自php背景,我使用了大量ajax。但是,是的,您尝试使用asp作为p是正确的惠普给了我一段艰难的时光