#asp.net #forms #datalist #datakey
#asp.net #формы #datalist #datakey
Вопрос:
Мне нужно получить выбранный элемент из DataList в ASPNET в общей процедуре ведения журнала, не зная имени элемента управления или имени datakey (может отличаться от страницы к странице). Единственное место, где я могу найти эти данные, похоже, на странице.FormViewDetails.DataKey?
Я попробовал следующее:
System.Web.UI.Page page = System.Web.HttpContext.Current.Handler as System.Web.UI.Page;
var _barVariable = typeof(System.Web.UI.Page).GetField("FormViewDetails", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(page);
Бит, при котором ссылка на объект не установлена, исключение, я могу видеть содержимое страницы.FormViewDetails в watch и VS debugger:
ПРОТИВ отладки
Почему я получаю исключение с нулевой ссылкой? Есть ли более простой способ получить доступ к этой информации?
Ответ №1:
Нашел ответ:
System.Reflection.PropertyInfo strProperty = page.GetType().GetProperty("FormViewDetails", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
System.Reflection.MethodInfo strGetter = strProperty.GetGetMethod(nonPublic: true);
FormView val = (FormView)strGetter.Invoke(page, null);