我试图使用.NET 4.5中的MVC4实现我自己的自定义ModelBinder,但得到了最奇怪的错误。我的代码看起来差不多。像这样
TableViewModelModel : IModelBinder
public object BindModel(ControllerContext ctx, BindingContext btx)
{
IEnumerable<String> sSearch = ctx.HttpContext.Request.Params.Keys.OfType<String().Where(key => key.StartsWith("sSearch_"));
...
}NullReferenceException在第一行抛出,但没有一个属性实际为空(它们都出现在智能感知调试中)。在一个绝望的时刻,我决定去掉一些属性,以便更好地了解异常抛出的位置,我发现罪魁祸首是Params属性。真正奇怪的是,查询字符串中的所有键都列在调试窗口中,但还是抛出了一个异常。在这件事上我真的需要一些帮助!
谢谢。
发布于 2012-08-03 17:14:43
使用Reflector和分析堆栈跟踪找到了错误。原来,在调用堆栈的某处,HttpRequest.Params试图读取我的主体对象(HttpContext.User)的Identity属性。我有一个定制的IPrincipal实现,它不会初始化Identity对象--现在就有了。
非常感谢那些花时间阅读我的问题的人。
https://stackoverflow.com/questions/11782250
复制相似问题