我有两页page1.aspx和page2.aspx,两者都有部分类的代码。 如何从page2.aspx访问page1.aspx上的公共属性消息?
public string message { get; set; }
答案 0 :(得分:2)
我刚看到一个是MasterPage而另一个是masterpage的客户端? 然后是不同的方式。
如果您有2个简单的不同页面。 我这样做了。 它是一个post值,通过使用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 :(得分:1)
如果一个是主页面,另一个是使用主页面的页面。
母版页
<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";
}
}
}
现在是具有previus主页的Page1.aspx
<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";
}
答案 2 :(得分:1)
如果您不在无会话环境中,那么在发射器页面中,将您的字符串(或您的对象 - 例如,词典)推送到会话中:
Session("MyVar") = "WhatEver"
在接收者页面中,您可以通过以下方式取回:
MyPreviousVar = Session("MyVar")
答案 3 :(得分:0)
你不应该这样做,页面应该是独立的实体。如果您需要将此数据从一个表单传递到另一个表单,请考虑使用查询字符串,或将表单发布到第二页。
行。你有没有试过Page.Master.Property?
答案 4 :(得分:0)
如果您想在每个页面上都有一个消息属性。您可以实现自己的BasePage并在基页中定义message属性。然后从您的自定义基页派生后续页面。这样,您的所有页面都将始终具有消息属性。
但是,这并不会使每个页面的消息属性保持不变。如果您尝试在页面之间传递值,则应使用会话状态或查询字符串
此MSDN页面可能对您有用。