0

我需要在不知道控件名称或数据键名称的通用日志记录过程中从 ASPNET 中的 DataList 获取所选项目(可能因页面而异)。我唯一能找到这些数据的地方似乎是 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);

这给出了一个对象引用未设置异常,我可以在手表和 VS 调试器中看到 Page.FormViewDetails 的内容: VS debug

为什么我得到空引用异常?有没有更简单的方法来访问这些信息?

4

1 回答 1

0

找到了答案:

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);
于 2019-04-16T07:58:20.367 回答