可以从javascript文件内部获取ASP.NET控件值

Possible to get an ASP.NET control value from inside of an javascript file?

本文关键字:ASP NET 控件 获取 内部 javascript 文件      更新时间:2023-09-26

我想从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中只有alert('<%= lbl_test.Text %>');

我有没有办法重现js文件中第一段javascript中的行为?

你不能这样做,你必须选择

  1. 从调用javascript文件中函数的aspx页面(some.net页面)传入控件id

  1. 使您的脚本文件实际上是一个.net输出文件。然后你可以嵌入你的代码。例如,将其命名为javscriptwhatever.aspx,但将代码后面的文件内容类型设置为text/javascript,例如这里所述http://social.msdn.microsoft.com/Forums/en-US/jscript/thread/c706d380-9688-4758-9d7e-9522d59d5855

作为@Adam提供的进一步建议,您可以考虑使用#include指令。使用这种方法,您应该能够将.js文件的代码包装在适当的<script>标记中,并通过#include引用"注入"它:

<head>
    <!--#include file="myScript.js"-->
</head>

我还没有测试过,这只是另一种可能性。我不也不一定主张定期使用#includes,而且在大多数情况下都会避免使用它们;但如果你的选择余地很小,它可能会成功。

我认为您最好的选择是首先建议修改脚本,以接受来自本机语言的任何参数,从而避免内联ASP.NET脚本和Javascript的混合。

ASP.NET输出到web浏览器的页面必然是标准HTML/Javascript/CSS。Javascript在web浏览器的客户端运行。因此,使用Javascript可以执行任何您在客户端上正常执行的操作。

标签将输出为跨度。所以你可以这样做:

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);