完全陷入困境,我在ektron中创建了一个小工具,2天前工作正常,突然间所有事件都无缘无故地停止工作。我一直试图追查罪魁祸首无济于事。
我的aspx文件是一个基本的多视图,有两个视图,一个用于编辑设置,另一个用于内容。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ContentPlus.ascx.cs" Inherits="widget_ContentPlus" Debug="true" %>
<asp:multiview ID="contentPlusWidget" runat="server">
<asp:View ID="vEdit" runat="server">
<table>
<tr>
<td class="label">Content: </td>
<td><asp:DropDownList ID="ddlContentType" runat="server" class='displayType'></asp:DropDownList></td>
</tr>
<tr>
<td><asp:Button ID="btnSave" runat="server" Text="Save" /></td>
<td><asp:Button ID="btnCancel" runat="server" Text="Cancel" /></td>
</tr>
</table>
</asp:View>
<asp:View ID="vContent" runat="server">
<!-- Content Code -->
</asp:View>
</asp:multiview>
然后在contentplus.ascx.cs文件中,我有我的页面事件,然后是我的btn事件
protected void Page_Init() {
_host = Ektron.Cms.Widget.WidgetHost.GetHost(this);
_host.Title = "My Widget";
_host.Edit += new EditDelegate(EditEvent);
_host.ExpandOptions = Expandable.ExpandOnEdit;
btnSave.Click += new EventHandler(btnSave_Click);
btnCancel.Click += new EventHandler(btnCancel_Click);
}
protected void Page_Load() {
if(!this.IsPostBack)
ChangeViewTo(vContent);
}
protected void btnSave_Click(object sender, EventArgs e) {
Javascript.Alert("SAVED!");
SaveSelectedIndex();
ChangeViewTo(vContent);
}
protected void btnCancel_Click(object sender, EventArgs e) {
Javascript.Alert("CANCEL!");
ChangeViewTo(vContent);
}
public void EditEvent(string settings) {
Javascript.Alert("EDIT!");
ChangeViewTo(vEdit);
PopulateDropDownBoxWithAvailableContent();
}
void ChangeViewTo(View view) {
Javascript.ConsoleLog(view.ID);
contentPlusWidget.SetActiveView(view);
if(view.Equals(vEdit))
PopulateDropDownBoxWithAvailableContent();
}
有些东西不起作用,首先点击设置按钮,屏幕变为灰色并带有旋转图标,当它返回时没有发生任何事情。这通常发生在_host.Edit += new EditDelegate(EditEvent);
委托尚未设置的情况下,但正如您所看到的那样。其次,当我将设置视图设置为默认值时,按下保存或取消按钮,您将获得旋转对话框,然后什么都没有。永远不会触发事件代码。但是你可以看到我在Page_Init()
我觉得我错过了一些明显的东西,但我已经被困了一天。有什么想法吗?
编辑:更改标题以反映当前对问题的理解
答案 0 :(得分:0)
确定找到了解决方案并将其发布给其他任何人。
当Ektron执行ajax回发时,它希望响应的格式为
1|#||4|6696|updatePanel|ctl00_cphBillBoard_dzLeft_updatepanel|
<div id="ctl00_cphBillBoard_dzLeft_dzcontainer" class="dropzone PBClear" EditMode="true">....<the rest of your content>.....
开头的那些管道非常重要,在我的代码中的几个地方我动态地在浏览器内部注入javascript进行调试,我还使用Response.Write()将一些错误消息记录到屏幕上; 这些都是在我的管道之前注入的,所以它搞砸了ajax请求。当我意识到这一切并删除了我的所有日志记录时,一切正常!