Как я могу получить доступ к Page.FormViewDetails.DataKey? - PullRequest
0 голосов
/ 16 апреля 2019

Мне нужно получить выбранный элемент из DataList в ASPNET в общей процедуре ведения журнала, не зная имя элемента управления или имя ключа данных (может отличаться для разных страниц).Единственное место, где я могу найти эти данные, кажется, в Page.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);

Бит, это дает ссылку на объект, а не установленное исключение, я вижусодержимое Page.FormViewDetails в watch и VS отладчике: VS debug

Почему я получаю исключение нулевой ссылки?Есть ли более простой способ получить доступ к этой информации?

1 Ответ

0 голосов
/ 16 апреля 2019

Нашел ответ:

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