我有一些JavaScript在ASP.NET页面看起来像这样:

var list = $get('<%=Topics.ClientID %>');

我现在已经写了很多功能在使用这个语法,我想集中我的JavaScript和推动这一到外部JavaScript文件。然而这打破,由于“主题”无法找到。

什么是获得这个工作最好的策略是什么?我想我应该作为参数传递给函数的控制/控制信息,但我似乎无法得到语法工作。任何建议?

有帮助吗?

解决方案

这对ASP.NET JS发展的共同问题。至于我,我用同样的办法,每次和它看起来很好。

我已经习惯在JavaScript面向对象,所以我大部分的JS外部文件如下:

function CouponManager()
{
}

和在的.aspx代码我做的:

<script language="javascript">
    var couponManager = new CouponManager();
</script>

如果我需要通过一些参数变更类的声明:

function CouponManager(params)
{
    // .. stuff here

    this.initialize = function(initParams)
    {
       // .. accessing initParams variable for server control IDs
    };

    this.initialize(params);
}

和从代码的.aspx我执行以下操作:

<script language="javascript">
    var couponManager = new CouponManager
    ({
        txtCouponNameId = '<%= txtCouponName.ClientID %>',
        txtCouponDescriptionId = '<%= txtCouponDescription.ClientID %>'
    });
</script>

这个方法允许我在一个单一的标签从.aspx页JS分离并具有所有服务器控制的依赖关系。

其他提示

您应该从它返回客户端元件usercontol内创建一个JavaScript方法。然后在其他网页/控制,只需访问该方法

在用户控制

 <script language="javascript">
     function GetTopics() {
          return = $get('<%=Topics.ClientID %>');
     } 
 </script>

在其他页/控制

 <script language="javascript">
     var list = GetTopics();
 </script>

编辑 - 你所面临的问题是你需要Topics.ClientID它不存在。因此,要弥补这一差距的唯一途径是把它放在一个共同的地方。如果你真的不想这样做,你可以尝试一些其他的标准来选择你的元素。如果您在使用jQuery,你可能标志着一类主题的元素,然后用$(“主题”)中找到它。

如果你知道你只有叫每页的“主题”一个服务器控件,并使用命名约定,你可以从任何控制主题继承的(也许这是一个HiddenField?你不指定),并覆盖其客户端Id吸气剂返回其服务器ID是这样的:

HTTP://andreascode.wordpress。 COM / 2009/4月27日/微小-滴落-的-ASPNET汁/

那么你就可以在你的JavaScript文件知道会有一个隐藏字段在页面设置id为“主题”和使用直接。

根据您的域名/这个情况既可以节省您大量的时间或拧你在大的时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top