Как я могу получить доступ к странице.FormViewDetails.DataKey?

#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);