AJAX和ASP.net,在外部文件中引用服务器控件
-
06-09-2019 - |
题
我有一些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为“主题”和使用直接。
根据您的域名/这个情况既可以节省您大量的时间或拧你在大的时间。