【问题标题】:Ektron Multiview not switching viewsEktron Multiview 不切换视图
【发布时间】:2014-07-02 13:23:50
【问题描述】:

这里完全被难住了,我在 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()分配了事件委托

我觉得我错过了一些明显的东西,但我已经被难住了一天。有什么想法吗?

编辑:更改标题以反映当前对该问题的理解

【问题讨论】:

  • 查看运行它的服务器上的事件查看器。听起来错误正在发生在服务器端,但没有报告给前端。
  • 终于领先了!我得到以下信息::请求的表单身份验证失败。原因:提供的票已过期。在我们说话的时候搜索谷歌......
  • 我不确定它是否相关,在我清除缓存后,我停止接收错误但仍然有问题。

标签: c# asp.net events widget ektron


【解决方案1】:

OK 找到了解决方案,我将其发布给其他人。

当 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 请求。当我意识到这一点并删除了我的所有日​​志记录时,一切正常!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    相关资源
    最近更新 更多