1

我的 DNN 模块页面仅包含一些 div 和一个 LinkBut​​ton。使用 jQuery AJAX 填充 div 的内容。该按钮用于将需要上传的文件发布到服务器。我收到“无效的回发或回调参数”错误。

假设无法关闭事件验证,从我读到现在的内容,我不应该使用 javascript 修改页面上任何服务器控件的内容,如果我这样做了,那么我必须使用 RegisterForEventValidation 来注册所有可能的回发数据事先控制。我不确定这是否适用于我的情况,因为没有正在修改的服务器控件。当其余内容全部通过 AJAX 加载时,我上传文件的方法是否存在问题?

<div id="divTop"></div>
<div id="divMain"></div>
<div id="divError" style="display: none" class="ui-widget-content ui-state-error"></div>
<div id="divAddFile"></div>
<div id="divSearchNow" class="ui-widget-header divControl" style="position: absolute; display: none; z-index: 999;"></div>
<asp:LinkButton ID="btnUploadFiles" runat="server" OnClick="btnUploadFiles_Click"
Style="display: none;">Upload Files</asp:LinkButton>

为了使用户能够上传,一个 html 文件控件被渲染并且按钮是可见的,两者都通过 AJAX/javascript。但是,当页面尝试回发时出现错误。

到目前为止,我看到的大多数示例都提到了通过 javascript 操作的下拉菜单,因此 RegisterForEventValidation 用于所有动态值。我如何将其应用于我的情况?

我也愿意接受有关我在几乎完全通过 AJAX 呈现的页面上上传文件的方法的建议。提前致谢!

4

1 回答 1

-1

您的主要问题是您不能同时使用 Postbacks 和 AJAX 而不会出现很多问题。当服务器发出一个网页时,它期望在 Postback 中返回相同的内容。例如,如果它发送空 div,然后您使用 AJAX 填充这些 div,然后将其发布回服务器,服务器将出错。有一些方法可以解决这个问题,但根据我的经验,它们几乎从不始终如一地工作。

您需要使应用程序完全面向服务 (AJAX) 或完全基于页面方法。

面向服务 - 创建允许您使用 AJAX 函数上传文件的服务器端控件。

页面方法 - 需要在服务器端填充 div。对客户端内容的任何更改都应使用完整的回发,而不是 AJAX。

如果上传时不需要 div 中的内容,则可以使用更新面板。换句话说,如果您需要在单击按钮时回发 div,您仍然会收到相同的错误。如果不需要 div 内容,则仅在按钮周围包装更新面板将导致仅返回该按钮单击,并可以消除您的错误。

于 2015-08-18T16:27:42.440 回答