可以从JavaScript文件内部获取ASP.NET控件值吗?

问题描述

| 我想从javascript文件内部获取ASP.NET控件的值。我知道当javascript位于aspx页面上而不是js文件中时如何执行此操作。例:
<head>
    <script type=\"text/javascript\">
        alert(\'<%= lbl_test.Text %>\'); //alerts the text of the ASP.NET label
    </script>

    <script type=\"text/javascript\" src=\"Scripts/test.js\" /> //alerts \"<%= lbl_test.Text\" %>
</head>
在此示例中,test.js中仅包含“ 1”。 无论如何,我是否可以在js文件的第一段javascript中重现该行为?     

解决方法

        您无法做到这一点,您将要么 从调用JavaScript文件中的函数的aspx页(某些.net页)中传递控件ID 要么 使您的脚本文件实际上是一个.net输出文件。然后,您可以嵌入代码。例如,将其命名为javscriptwhatever.aspx,但在后面的代码中将文件的内容类型设置为text / javascript,例如此处所述 http://social.msdn.microsoft.com/Forums/zh-CN/jscript/thread/c706d380-9688-4758-9d7e-9522d59d5855     ,        作为对@Adam提供的内容的进一步建议,您可以考虑使用#include指令。使用这种方法,您应该应该能够将.js文件的代码包装在适当的
<script>
标记内,并通过#include参考将其“注入”:
<head>
    <!--#include file=\"myScript.js\"-->
</head>
我没有测试过,这只是另一种可能性。我不也不一定会建议定期使用#include,并且在大多数情况下会避免使用它们。但是,如果您的选择很小,则可能会奏效。 我认为最好的选择是第一个建议,即修改脚本以接受来自本机语言的任何参数,以避免内联ASP.NET脚本和Javascript的混合使用。     ,        ASP.NET输出到Web浏览器的页面必然是标准的HTML / Javascript / CSS。 Javascript在Web浏览器的客户端上运行。因此,可以使用您可以在客户端上正常执行的Java脚本执行任何操作。 标签将作为跨度输出。因此,您可以执行以下操作:
function getLabelValue(lbl) {
    if ( lbl.childNodes.length == 0 )
        return null;

    var textValue = \"\";
    for ( var i = 0; i < lbl.childNodes.length; i++ )
    {
        if ( lbl.childNodes[0].nodeType == Node.TEXT_NODE )
            textValue += lbl.childNodes[0].nodeValue;
    }

    return textValue;
}

var lbl = document.getElementById(\"lbl_test\");
var value = getLabelValue(lbl);
alert(value);
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...