时间:2011-05-05 15:48:54

标签: c# asp.net object parameters

我正在尝试使用<asp:hyperlink>将对象从一个页面传递到另一个页面而没有任何成功。我试图调用一个C#方法并将该对象放入一个会话,但后来我意识到你不能使用<asp:hyperlink>调用一个方法。然后我考虑使用<asp:linkbutton>但我需要在新窗口中打开新网页。

我该如何正确地做到这一点?还有其他好的选择吗?

3 个答案:

答案 0 :(得分:5)

  

然后我考虑使用<asp:linkbutton>然后我需要   在新窗口中打开新网页。

您无需打开新窗口...将其添加到服务器端LinkButton处理程序:

<asp:LinkButton id="btnYourLinkButton" runat="server" 
    OnClick="btnYourLinkButton_Click">Test</asp:LinkButton>

protected void btnLogout_Click(object sender, System.EventArgs e)
{
    var someObject = GetYourDataWithSomeFunction();
    Session["YourData"] = someObject;  // saves to session
    Response.Redirect("yourNewUrl.aspx");
}

这会将值存储在Session中并重定向到同一窗口中的新页面。

编辑:

如果您需要在新窗口中打开,请执行与上述相同的操作,但不要执行Response.Redirectwindow.open javascript调用添加到您的页面服务打开新窗口:

ScriptManager.RegisterStartupScript(this, this.GetType(), "AUTOOPEN",
    "window.open('yourNewUrl.aspx', '_blank');", true);

您可以选择向Click方法添加ajax调用以设置Session服务器端,然后根据您的ajax调用完成触发重定向。

答案 1 :(得分:3)

将对象添加到Session,然后重定向到新页面。在新页面中,检查对象的Session变量。

答案 2 :(得分:1)

任何Web应用程序本质上都是无状态的。您的对象仅在处理页面请求期间存在。使用ASP.Net等技术进行开发和应用时,对象检索的一般模式是将标识符作为表单发布数据或查询字符串的一部分发送,然后使用此标识符重新加载您之前使用的对象。上一页发布/请求。

可以在会话中添加对象并按照其他答案中的建议检索它们,但这种方法存在问题,例如:会话超时,可扩展性等。

如果您要提供更多有关您尝试做的事情的详细信息,那么就更容易为您提供更完整的答案或建议如何解决您的特定问题。