Глобальная переменная .Net Access в сервере включает с главной страницы - PullRequest
1 голос
/ 15 марта 2012

Я хочу, чтобы Date был глобальной переменной, к которой сервер aspx может получить доступ.У меня есть несколько основных шаблонов, но я хочу, чтобы верхний и нижний колонтитулы были серверными, чтобы у меня было только одно место для обновления ссылок вместо того, чтобы иметь их в каждом из основных.В нижнем колонтитуле я хочу, чтобы дата авторского права была динамичной, и, надеюсь, сделать ее глобальной переменной, к которой можно получить доступ в другом месте.

Я попытался поместить ее на главную страницу, а также включить сервер в сценарий сервера вaspx, но я не смог заставить ни работать.Я получаю, что ошибка, что переменная не существует в контексте.Я попытался объявить и зарегистрировать пространство имен, но я, должно быть, что-то делал не так.

Я хочу получить переменную currentYear из кода главной страницы в footer.aspx (include).

MasterСтраница

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="OneColumn.master.cs" Inherits="Project.Masters.OneColumn" %>
<!DOCTYPE html>
<html>
<head id="oneColumnHead" runat="server">
<title></title>
</head>
<asp:ContentPlaceHolder ID="head" runat="server"></asp:ContentPlaceHolder>
</head>
<body>
<form id="oneColumnForm" runat="server">
<asp:ContentPlaceHolder ID="body" runat="server"></asp:ContentPlaceHolder>
</form>
    <%-- Shared Footer --%>
    <!-- #Include file="inc_footer.aspx" -->

</body>
</html>

Мастер-код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Project.Masters
{
    public partial class OneColumn : System.Web.UI.MasterPage
    {

        static int currentYear = DateTime.Now.Year;

        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

Нижний колонтитул Aspx

<div id="footer">Copyright © <%= currentYear %></div>

Таким образом, нижний колонтитул содержит только HTML-код, который необходимо включить.Как зарегистрировать эту главную страницу в нижнем колонтитуле?

РЕДАКТИРОВАТЬ: ОК, поэтому это невозможно.Я пытаюсь метод контроля пользователя.Это тоже не работает.

Это то, что у меня есть.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Project.Masters
    {
    public partial class uc_footer : System.Web.UI.UserControl
        {
        static int currentYear = DateTime.Now.Year;
        string dateYear = currentYear.ToString();

        protected void Page_Load(object sender, EventArgs e)
            {

            }
        }
    }

ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="uc_footer.ascx.cs" Inherits="TeamWork.Masters.uc_footer" %>
<div id="footer">Copyright © <%= dateYear %></div>

Он все еще говорит, что не существует в контексте.

Ответы [ 2 ]

1 голос
/ 15 марта 2012

Вы можете сделать это примерно так:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="OneColumn.master.cs"
  Inherits="Project.Masters.OneColumn" %>
<%@ Register TagPrefix="uc" TagName="footer" Src="~/PATHTOYOURCONTROL" %>
<!DOCTYPE html>
<html>
    <head id="oneColumnHead" runat="server">
    <title>Master page title</title>
    </head>
    <body>
    <form id="oneColumnForm" runat="server">
        <table>
           <tr>
                <td>
                    <asp:ContentPlaceHolder ID="head" runat="server">
                    </asp:ContentPlaceHolder>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:ContentPlaceHolder ID="body" runat="server">
                    </asp:ContentPlaceHolder>
                </td>
            </tr>
            <tr>
                <td>
                    <uc:footer id="footer1" runat="server"/>
                </td>
            <tr>
        </table>
    </form>
    </body>
</html>

Вы можете прочитать больше здесь как включить элемент управления на страницу

0 голосов
/ 15 марта 2012

Я уже ответил на вопрос, похожий на этот:

VS 2005 не может создать aspx-файлы с включениями

Включения на стороне сервера выполняются IIS, а не asp.net. Таким образом, включение, которое вы пытаетесь сделать с нижним колонтитулом, будет слишком поздно включено в игру, чтобы оно сработало. Включение не будет иметь никакого представления о элементах управления или переменных, содержащихся в вашем файле.

Я бы рекомендовал использовать пользовательский элемент управления, чтобы избежать дублирования кода, как указано в других ответах. Кроме того, вы можете захотеть добавить дату авторского права в web.config или статическую переменную в масштабе приложения, если вы хотите, чтобы она была установлена ​​только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...