为什么这个JS失败时,我使用母版页?(ASP.NET)

本文关键字:母版页 ASP NET JS 失败 为什么 | 更新日期: 2023-09-27 17:49:27

我目前正在做一个项目,我需要使用很多AJAX AutoCompleteExtenders,它们一直工作得很好-但是现在我正在整理代码并实现一个母版页,我遇到了问题。我有这个JS:

$find('txtName')._onMethodComplete = function(result, context) {
$find('txtName')._update(context, result, false);
webservice_callback(result,context);
};

当我加载页面时,出现了与代码片段相关的错误:

Microsoft JScript runtime error: 'null' is null or not an object

重申一下,这只发生在我因为一些奇怪的原因有一个母版页的时候。什么好主意吗?

为什么这个JS失败时,我使用母版页?(ASP.NET)

您需要使用<%=txtName.ClientID%>,因为在使用母版页时,您的id将被篡改,以避免母版页与aspx/usercontrols等之间的名称冲突。

但是请注意,为了能够使用<%=,您必须在ASP中包含JS。. NET标记代码。这可以用IIS #include来完成,而不是用script的src。

的例子:

<!-- #Include virtual=".'JS'YourJSFileWithASPNETMarkup.js" -->

尝试在页面上查看源代码,并确保仍然命名为txtName。有时母版页的名称也会发生变化。

你可以试试这个吗:

(' & lt; % = txtName.ClientID>")。_onMethodComplete = function(result, context) {

如果你使用的是。net 4,那么你可以将ClientIDMode="Static"添加到page指令中,这将告诉ASP:

当你使用masterpage,你的控件的ID改变,所以你不能在Javascript中使用相同的ID,相反,你可以修改你的选择器像这样:$('input[ID *="txtName"]')现在它找到所有的控件有一个ID包含txtName。你可以使用不同的选择器。这是一个有用的链接