ASP.net没有回发到正确的页面

时间:2011-05-18 22:48:10

标签: c# asp.net xml postback

所以我有一个稍微不正统的应用程序类型。

我有一个名为AddNewBlog.aspx的aspx页面。此页面从数据库查询生成XML数据,它包含文件AddNewBlogXSL.aspx,这是一个xsl样式表。 结果是AddNewBlog XML数据被客户端的AddNewBlogXSL转换为XHTML。

因此,虽然请求的页面是AddNewBlog.aspx,但布局和控件以及表单都在AddNewBlogXSL.aspx上,因为它包含所有布局和格式。
在AddNewBlogXSL.aspx上我做了一个asp:按钮,它试图回发到AddNewBlogXSL.aspx,这是可以理解的。

问题是页面是xslt样式表而不是网页..我需要它回发到AddNewBlog.aspx,因为这是包含AddNewBlogXSL.aspx的正确页面

我似乎唯一能做的就是允许提交给AddNewBlogXSL.aspx的默认行为,处理页面,并将它们重定向到正确的页面AddNewBlog.aspx,但这样就很难处理错误消息等等,因为我只是从AddNewBlogXSL.aspx重定向到AddNewBlog.aspx后无法控制AddNewBlog.aspx

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您正在寻找PostBackUrl财产。

<asp:button id="Button2"
  text="Post value to another page" 
  postbackurl="~/Path/To/AddNewBlog.aspx" 
  runat="Server">
</asp:button>

编辑:

为了解决你的评论,IsPostBack在这种情况下是真的,因为它不是回发,它只是另一个页面的帖子。您必须通过Page.PreviousPage属性访问这些值,如我列出的MSDN文章中所述。

  

在跨页回发期间,源页面控件的内容将发布到目标页面,浏览器将执行HTTP POST操作(而不是GET操作)。但是,在目标页面中,在跨页面发布后,IsPostBack属性立即为false。虽然行为是POST的行为,但是交叉发布不是对目标页面的回发。因此,IsPostBack设置为false,目标页面可以通过其首次代码。

同样根据MSDN,您将检查PreviousPage.IsCrossPagePostBack属性而不是Page.IsPostBackProperty

if(PreviousPage.IsCrossPagePostBack == true)
{
     //Get values from PreviousPage
    text = ((TextBox)PreviousPage.FindControl("TextBox1")).Text;
}

Cross Page Posting Details

我继续编写了一个小测试工具(也就是说,我从MSDN页面上取了示例,: - 0)来验证,并且在跨页面发布时结果如下:

Test Results 这不是一个理想的情况,而且如上所列访问您的价值也很困难,但对于您设计的模型,这是我能想到的最好的。

答案 1 :(得分:0)

除上述答案外,您能否在此页面确认“AutoEventWireUp”为false。如果是这样,请在这种情况下覆盖页面加载方法。