2010-06-01 1 views
0

Я создаю настраиваемый метод include (load), чтобы проверить, существует ли файл. Функция загрузки включает файл, если он существует, или отправляет электронное письмо, чтобы уведомить меня о неработающей ссылке, если это не так. Проблема, с которой я столкнулась, заключается в том, что если файл include содержит серверные элементы управления, он просто отображает их как обычный текст. Это проблема, если я попытаюсь добавить файл include в файл include.Response.Write on Server Controls

В 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 protected]", "Missing Includes File", body); 
    } 
} 

Так что, если "menu.inc" также включает в себя <% ResourceMngr.load("~/Includes/test.inc"); %> тег, он просто выводит его в виде обычного текста на странице вместо того, чтобы пытаться включить test.inc, пока все остальные html на странице отображаются точно так, как ожидалось. Как я могу позволить моему включенному файлу иметь серверные элементы управления?

ответ

2

Я предполагаю, что вы исходите из классического фона asp или php. asp.net не работает таким образом с включенными. Вероятно, вы захотите найти некоторые базовые веб-формы или учебные пособия по mvc, потому что вы хотите работать с фреймворком, а не против него :-)

В частности, посмотрите, как использовать UserControls (то есть те, которые имеют .ascx расширение)

+0

Когда я пытаюсь использовать элементы управления пользователями, я получаю ту же проблему, что и раньше. Например, <% @ Control Language = "C#" AutoEventWireup = "true" CodeFile = "menu.ascx.cs" Inherits = "Includes_menu"%> отображается вверху моей страницы в виде открытого текста. Я также попытался иметь веб-элементы управления внутри