ASP.NET, как получить доступ к публичным свойствам? - PullRequest
0 голосов
/ 14 июня 2010

У меня есть две страницы page1.aspx и page2.aspx, обе имеют код с частичными классами.Как я могу получить доступ к сообщению публичной собственности на page1.aspx из page2.aspx?

public string message { get; set; }

Ответы [ 5 ]

2 голосов
/ 14 июня 2010

Обновление

Я только что прочитал, что один - это MasterPage, а другой - клиент на главной странице? тогда его другой путь.

Страница на страницу

Если у вас 2 простые разные страницы. Я сделал это таким образом. Почтовое значение, используя хитрости asp.net:)

Вкл. Page2.aspx добавить это сверху.

<%@ PreviousPageType VirtualPath="Page1.aspx" %>

и как я читаю из Page1.aspx в коде

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        if (Page.PreviousPage != null)
        {
            if(Page.PreviousPage.IsCrossPagePostBack == true)
            {
                txtGetItFromPreviusPage.Text = PreviousPage.SomeString;
            }
        }
    }
}

Вкл. Page1.aspx кнопка, которая отправляет меня на Page2.aspx

<asp:Button ID="btnEna" runat="server"  Text="Send Some variables to other page" 
    PostBackUrl="Page2.aspx" 
    onclick="btnMoveSelection_Click" />                 

и код, который я использую для расчетов Page1 или другие мысли

public string SomeString
{
    set 
    { 
        ViewState["txtSomeString"] = value;
    }
    get
    {
        if (ViewState["txtSomeString"] != null)
            return ViewState["txtSomeString"].ToString();
        else
            return string.Empty;
    }
}


protected void btnMoveSelection_Click(object sender, EventArgs e)
{
    // some final calculations

}   
1 голос
/ 27 февраля 2011

Если вы НЕ находитесь в среде без сеансов, то на странице передатчика вставьте вашу строку (или ваш объект - например, словарь) в сеанс:

Session("MyVar") = "WhatEver"

На странице получателя вы можете получить его обратно:

MyPreviousVar = Session("MyVar")
1 голос
/ 14 июня 2010

Если одна из них является главной страницей, а другая - страницей, в которой используется главная страница.

Мастер-страница

<body>
    <form id="form1" runat="server">
    <div>
        <asp:Literal runat="server" ID="txtOnMaster"></asp:Literal>
        <br />
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">        
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>

и код

public partial class Dokimes_StackOverFlow_MasterPage : System.Web.UI.MasterPage
{
    public string TextToMaster
    {
        get { return txtOnMaster.Text; }
        set { txtOnMaster.Text = value; }        
    }


    protected void Page_Load(object sender, EventArgs e)
    {
        // here I find the control in the client page
        Control FindMe = ContentPlaceHolder1.FindControl("txtOut");

        // and if exist I set the text to client from the master   
        if (FindMe != null)
        {
            ((Literal)FindMe).Text = "Get from Master Page";
        }
    }
}

и теперь Page1.aspx с главной страницей previus

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:Literal runat="server" ID="txtOut"></asp:Literal>  
</asp:Content>

и код

protected void Page_Load(object sender, EventArgs e)
{
    // here I set the text on master page from client
    ((Dokimes_StackOverFlow_MasterPage)Master).TextToMaster = "Set from Client";
}
0 голосов
/ 14 июня 2010

Если вы хотите иметь свойство сообщения на каждой странице.Вы можете реализовать свой собственный BasePage и определить свойство сообщения на вашей базовой странице.Затем извлеките последующие страницы из вашей пользовательской базовой страницы.Таким образом, все ваши страницы всегда будут иметь свойство сообщения.

Однако это не будет поддерживать свойство сообщения постоянным на каждой странице.Если вы пытаетесь передать значения между страницами, вам следует использовать либо состояние сеанса, либо строку запроса

Эта страница MSDN может быть вам полезна.

0 голосов
/ 14 июня 2010

Вы не должны этого делать, страницы должны быть отдельными объектами.Если вам нужно передать эти данные из одной формы в другую, рассмотрите возможность использования строки запроса или размещения своей формы на второй странице.


OK.Вы пробовали тогда Page.Master.Property?

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