所以我有一个稍微不正统的应用程序类型。
我有一个名为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
有什么想法吗?
答案 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;
}
我继续编写了一个小测试工具(也就是说,我从MSDN页面上取了示例,: - 0)来验证,并且在跨页面发布时结果如下:
这不是一个理想的情况,而且如上所列访问您的价值也很困难,但对于您设计的模型,这是我能想到的最好的。
答案 1 :(得分:0)
除上述答案外,您能否在此页面确认“AutoEventWireUp”为false。如果是这样,请在这种情况下覆盖页面加载方法。