手动刷新后不引用ScriptResource.axd

时间:2014-09-24 09:51:17

标签: javascript asp.net plupload dotnetnuke-module

我试图在DotNetNuke(6.x)中开发一种联系表单模块,我想在其中使用RequiredFieldValidator标记来验证表单。

因为我还使用PLUpload来启用文件上传,所以我在提交按钮的OnClientClick事件中调用了一个javascript函数:

function startUploadForm(objBtn)
{

    if (Page_ClientValidate()) {

        var uploader = $('#uploader').pluploadQueue();
        if (uploader.files.length == 0) return true; // Input is complete -> No running uploads -> Validation ok -> submit
        uploader.bind('UploadComplete', function () {
            __doPostBack('<%= cmdSubmit.UniqueID%>', ''); // Input is complete -> uploads finished -> Validation ok -> submit

        });
        if (uploader.files.length == (uploader.total.uploaded + uploader.total.failed)) return true; // Input is complete -> uploads finished -> Validation ok -> submit
        uploader.start();
        return false; // asynchronous upload isn't finished -> don't submit
    }
    return false; // Input isn't complete -> Validation failed -> don't submit
}

我的DNN模块包含以下结构的几个输入字段:

<asp:TextBox ID="SenderName" runat="server" Columns="40" Width="300px"></asp:TextBox>
<asp:RequiredFieldValidator ID="reqName" runat="server" 
                            ControlToValidate="SenderName"
                            ErrorMessage="(required)" 
                            SetFocusOnError="True">
</asp:RequiredFieldValidator>

在表单的最后,我有一个提交按钮:

<asp:Button ID="cmdSubmit" runat="server" 
            Text="Submit"
            OnClientClick="return startUploadForm(this);" />

现在我的问题是我需要在startUploadForm()函数中调用的客户端验证始终不可用。有时,网络服务器不会引用ScriptResource.axd,因此,Page_ClientValidate()不可用。我通过使用F12查看呈现的页面源来检查这一点。

如果我通过直接输入网址来加载页面,它几乎可以正常工作,但是如果我点击浏览器的刷新按钮,问题几乎每次都会发生。

这是我迄今为止所做的尝试:

将ValidationGroups分配给RequiredFieldValidator对象和提交按钮 定义属性enableclientscript =&#34; true&#34;在每个RequiredFieldValidator对象

我在这里做了什么大不了的事吗?

更新:请参阅我的评论。在为此特定模块禁用DNN缓存后,它可以正常工作。

1 个答案:

答案 0 :(得分:1)

我偶然发现了DNN的模块缓存设置,发现我将其设置为“未定义”,值为“0”。现在我已将其更改为“File”,再次使用值“0”并且初始测试运行没有任何问题。