2014-09-24 75 views
0

我试图在DotNetNuke(6.x)中开发一种接触表单模块,我想在其中使用RequiredFieldValidator标记来验证表单。手动刷新后未引用ScriptResource.axd

因为我也用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()函数中调用的客户端验证一直不可用。有时,Web服务器不会引用ScriptResource.axd,因此Page_ClientValidate()不可用。我已经通过使用F12查看呈现的页面源来检查这一点。

如果我通过直接输入URL加载页面,它主要工作,但如果我点击浏览器的刷新按钮,几乎每次都会出现问题。

这里是我试过到目前为止:

分配ValidationGroups到RequiredFieldValidator的对象和提交按钮 每个RequiredFieldValidator的对象上定义的属性enableclientscript =“真”

我做得大幅错误这里?

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

+0

我偶然发现了DNN的模块缓存设置,并注意到我将它设置为“undefined”,其值为“0”。现在我已将其更改为“文件”,同样值为“0”,并且初始测试运行时没有任何问题。这可能是原因吗? – oxident 2014-09-24 10:57:35

回答

1

我偶然发现了DNN的模块缓存设置,并注意到我将它设置为“undefined”,其值为“0”。现在我已将其更改为“文件”,同样值为“0”,并且初始测试运行时没有任何问题。