我有一些JavaScript在ASP.NET页面看起来像这样:AJAX和ASP.net,引用服务器控件的外部文件
var list = $get('<%=Topics.ClientID %>');
我现在已经写了许多功能,其中该语法使用,我想集中我的JavaScript并将其移入外部JavaScript文件。但是,由于无法找到“主题”,因此这会打破。
使这项工作最好的策略是什么?我假设我应该将控制/控制信息作为参数传递给函数,但似乎无法使语法起作用。有什么建议么?
我有一些JavaScript在ASP.NET页面看起来像这样:AJAX和ASP.net,引用服务器控件的外部文件
var list = $get('<%=Topics.ClientID %>');
我现在已经写了许多功能,其中该语法使用,我想集中我的JavaScript并将其移入外部JavaScript文件。但是,由于无法找到“主题”,因此这会打破。
使这项工作最好的策略是什么?我假设我应该将控制/控制信息作为参数传递给函数,但似乎无法使语法起作用。有什么建议么?
这是ASP.NET JS开发的常见问题。至于我,我每次都用同样的方法,看起来很好。
我使用Javascript功能来OOP,所以我大部分的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>
此方法允许我将.as从.aspx页面中分离出来,并将所有服务器控件依赖项都放在一个标记中。
您应该从usercontol内部创建一个javascript方法,该方法返回客户端元素。然后在其他网页/控制,只需访问该方法
在用户控制
<script language="javascript">
function GetTopics() {
return = $get('<%=Topics.ClientID %>');
}
</script>
在其他页/控制
<script language="javascript">
var list = GetTopics();
</script>
编辑 - 您所面临的问题是你需要的主题。 ClientID不存在的地方。所以弥合这个差距的唯一真正的方法是把它放在一个共同的地方。如果你真的不想这样做,你可以尝试通过其他标准来选择你的元素。如果你使用jQuery,你可以用一类主题标记一个元素,然后用$(“。Topics”)找到它。
如果您知道每个页面只有一个名为“Topics”的服务器控件,并且您使用命名约定,那么您可以从控件Topics(可能是HiddenField?您没有指定)继承它并覆盖它客户端Id吸气返回其服务器ID是这样的:
http://andreascode.wordpress.com/2009/04/27/tiny-drips-of-aspnet-juice/
,那么你可以在你的JavaScript文件知道,会在页面的隐藏字段与ID为“主题”和使用直接。
根据您的域名/情况,这可能为您节省大量时间,或者让您在大时间内陷入困境。
对不起,我不是更具体。我正在寻找将JavaScript集中到外部JavaScript文件而不是用户控件。我已经更新了这个问题。 – dtrickett 2009-05-26 15:02:04