可能是我错过的一个简单的疏忽(尽管我隐约记得一些关于 Response.Write 内部运作的晦涩博客文章在某些情况下无法按预期工作,但我不记得这是否是其中之一):
情况是,我在 SP2010 中运行的控件上有一个链接按钮,如果我不使用 HttpContext.Response.Write(),一切都会按预期工作(即我可以更改标签的 .Text 值)。但是,如果我调用 Context.Response.Write(),虽然我可以调试和单步执行代码,但似乎什么都没有发生(什么都没有写回,也没有出现对其他控件的更改)。它正在 _layouts 中的应用程序页面上运行,出现在模式对话框中。
(基本上,我正在尝试这样做 - http://acveer.wordpress.com/2011/01/25/using-the-sharepoint-2010-modal-dialog/但它不起作用。编辑:如果我改成asp:Button,还是不行)
如果您有兴趣,这里有一些代码:
.aspx:
@ Page Language="C#" AutoEventWireup="true" ...
<asp:LinkButton CssClass="button remove" runat="server" OnClick="remove_Click" Text="Remove" ID="remove"></asp:LinkButton>
.aspx.cs:
public void remove_Click(object sender, EventArgs e)
{
....
//if successful
HttpContext context = HttpContext.Current;
if (HttpContext.Current.Request.QueryString["IsDlg"] != null)
{
testControl.Text = "test code";
//doesn't work, and prevents line above from working
Context.Response.Write("<script type='text/javascript'>alert('hi!');</script>");
Context.Response.Flush();
Context.Response.End();
// context.Response.Write("<script type='text/javascript'>window.frameElement.commitPopup()</script>");
// context.Response.Flush();
// context.Response.End();
}
}
有人遇到过类似的事情吗?
编辑:一些更有趣的作品可能会有所帮助,
- 按钮本身位于 UpdatePanel 中
- 我确实分配了 AsyncPostbackTrigger