JavaScript:从另一个表单引用控件

时间:2011-01-29 15:29:56

标签: c# javascript asp.net jquery

我的displaycloud.aspx页面包含两个数据绑定数据列表,每个列表用于显示标签云。如果没有从数据库中检索到任何内容,则数据列表具有EmptyDataTemplate,该空白标签包含空标签。我试图通过使用companyadmin页面上的代码显示消息“请记录故事”,但我收到错误(控件不在同一页面上)。如何在companyadmin.aspx中引用displaycloud.aspx中的标签positive_tags和negative_tags?另外,如果没有执行EmptyDataTemplate,我想重定向,如页面最底部所示。非常感谢您的帮助!

displaycloud.aspx:

<EmptyDataTemplate>
    <asp:Label ID="positive_tags" runat="server" Text=""></asp:Label>
</EmptyDataTemplate>

<EmptyDataTemplate>
    <asp:Label ID="negative_tags" runat="server" Text=""></asp:Label>
</EmptyDataTemplate> 

companyadmin.aspx:

<script type="text/javascript">
function validate() {

    var negative_tags = document.getElementById('negative_tags').innerText;
    var positive_tags = document.getElementById('positive_tags').innerText;

    if (negative_tags == "" && positive_tags == "") {
        (function($) {
            $.jGrowl("Please Log a Story", { theme: 'smoke', closer: true })
            return false;

        })(jQuery);

        return true;
    }

}
</script>

进一步下调ASP页面:

<asp:Button ID="LinkButtonTagCloud" runat="server" Text="TAG CLOUD" onClientClick="javascript:return validate();" PostBackUrl='<%# string.Format("~/displaycloud.aspx?project={0}&id={1}", Eval("ProjectName"), Eval("ProjectID")) %>' />

1 个答案:

答案 0 :(得分:0)

试试这个:

<script type="text/javascript">
    var negative_tags;
    var positive_tags;

    jQuery.ajax({
         url: 'displaycloud.aspx',
         success: function(response, status, xhr) {
           if (status != "error") {
             positive_tags = $('#positive_tags', response).text();
             negative_tags = $('#negative_tags', response).text();
         }},
         async: false
    });         

    alert("Positive tags: " + positive_tags);
    alert("Negative tags: " + negative_tags);

</script>

出于性能和应用程序设计的原因,我建议您直接从服务器以原始格式(Ajax的JSON)获取此数据:

  1. 上面的方法在解析之前将整个displaycloud.aspx页面加载到内存中,这是一个无用的开销。
  2. 一般而言,从工程角度来看,您应该考虑定义不同的应用程序层:表示,业务逻辑和数据,原始数据源等。在您的特定情况下,您不应该使一个页面内容依赖于另一个页面内容(基本上使您的表示层的一部分依赖于另一部分)。您要检索的数据显然属于业务层。