Response.Write服务器控件

时间:2010-06-01 20:13:26

标签: c# asp.net controls include

我正在创建一个自定义include方法(load)来检查文件是否存在。加载功能包括文件(如果存在)或发送电子邮件以通知我链接损坏(如果不存在)。我遇到的问题是如果包含文件包含服务器控件,它只是将它们显示为纯文本。如果我尝试将包含文件添加到包含文件,则会出现此问题。

在default.aspx我有:

<% ResourceMngr.load("~/Includes/menu.inc"); %>

在ResourceMngr中:

public static void load(String url) {

    string file = HttpContext.Current.Server.MapPath(url);
    if (System.IO.File.Exists(file))
    {
        HttpContext.Current.Response.Write(System.IO.File.ReadAllText(file));
    }
    else
    {
        String body = "This message was sent to inform you that the following includes file is missing: \r\n";
        body += "Referrer URL: " + HttpContext.Current.Request.Url.AbsoluteUri + "\r\n";
        body += "File Path: " + file;
        MailUtil.SendMail("email@email.com", "Missing Includes File", body);
    }
}

因此,如果“menu.inc”还包含<% ResourceMngr.load("~/Includes/test.inc"); %>标记,它只是在页面上以纯文本形式打印出来,而不是尝试包含test.inc,而页面上的所有其他html都显示出来完全符合预期。我如何允许我的包含文件具有服务器控件?

1 个答案:

答案 0 :(得分:2)

我假设你来自经典的asp或php背景。 asp.net不能以包含这种方式工作。你可能想查找一些基本的webforms或mvc教程,因为你想使用框架,而不是反对它: - )

特别是,查看如何使用UserControls(即扩展名为.ascx的那些)