Подводя итог, этот код добавляет автозаполнение Jquery в текстовое поле внутри формы представления Asp.Net, которая находится внутри UpdatePanel ,Null Asp.Net Control Causeing Javascript Ссылка на объект не установлена в экземпляр объекта в рендере
Следующий код работает без каких-либо проблем, если InsuranceInsertItemTextBox не равен null, что всегда происходит, когда Formview находится в режиме readonly. Я попытался использовать оператор if для завершения функции, если элемент управления имеет значение NULL, но это не работает. Я также попытался завершить утверждение, если режим просмотра формы установлен на чтение, но это тоже не сработало. Любые предложения по устранению этой ошибки? FYI: LINE 33 (идентифицируется в трассировке стека) является оператором if внутри функции InitAutoCompl. Если я удалю оператор if, ошибка перейдет к следующей строке.
$(document).ready(function() {
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
InitAutoCompl();
});
function InitializeRequest(sender, args) {
}
function EndRequest(sender, args) {
InitAutoCompl();
} function InitAutoCompl(freeInput) {
if (!document.getElementById('<%= CaseInformationFormView.FindControl("InsuranceInsertItemTextBox").ClientID %>'))return;
$('#<%= CaseInformationFormView.FindControl("InsuranceInsertItemTextBox").ClientID %>').autocomplete({
source: function(request, response) {
$.ajax({
url: '<%= Page.ResolveUrl("PacketsForUpload.aspx/GetInsuranceCompanies") %>',
data: "{ 'prefix': '" + request.term + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
messages: {
noResults: '',
results: function() {}
},
success: function(data) {
response($.map(data.d, function(item) {
return {
label: item.split("-")[0],
val: item.split("-")[1]
};
}));
},
error: function(response) {
alert(response.responseText);
},
failure: function(response) {
alert(response.responseText);
}
});
},
change: function(e, ui) {
if (!(freeInput || ui.item)) e.target.value = "";
Page_ClientValidate();
},
select: function(e, i) {
console.log("i.item", i.item);
Page_ClientValidate();
},
minLength: 3
});
};
Трассировка стека:
[NullReferenceException: Object reference not set to an instance of an object.]
ASP.packetsforupload_aspx.__RenderPacketsHeadContent(HtmlTextWriter __w, Control parameterContainer) in :33
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +268
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
System.Web.UI.Control.Render(HtmlTextWriter writer) +10
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
System.Web.UI.HtmlControls.HtmlHead.RenderChildren(HtmlTextWriter writer) +21
System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +32
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
System.Web.UI.Control.Render(HtmlTextWriter writer) +10
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
System.Web.UI.Page.Render(HtmlTextWriter writer) +29
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1386
EDIT: Кроме того, я просто понял, что возвращение не будет нарушать функцию. Я проверил это, удалив инструкцию if и просто вернув туда. Ошибка все еще происходит.
Спасибо за ваш ответ. Я просто проверил это, и это не сработало. Кроме того, я решил проверить возвращение в целом как способ выхода из моей функции. Если я заменил оператор if возвратом, просто чтобы увидеть, работает ли возврат вообще, я все равно получаю ошибку. – TimidObserver
Да, возврат из функции не поможет, так как доступ к ClientID возникает на стороне сервера. Вместо этого, определение ClientID должно учитывать случай, когда элемент управления недоступен. См. Измененную функцию. – HashPsi
Хорошо, спасибо за помощь. Я проведу это завтра. – TimidObserver