自定义IModelBinder中的NullReferenceException

时间:2012-08-02 16:55:52

标签: asp.net-mvc .net-4.5 modelbinder

我正在尝试使用.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在第一行全部抛出,但没有一个属性实际为null(它们都出现在intellisense调试中)。在一个绝望中,我决定摆脱一些属性,以便更好地了解抛出异常的位置,并且我发现罪魁祸首是Params属性。真正奇怪的是,调试窗口中列出了查询字符串中的所有键,但仍会抛出异常。我真的需要这个人的帮助!

感谢。

1 个答案:

答案 0 :(得分:1)

使用Reflector发现错误并分析堆栈跟踪。事实证明,在调用堆栈HttpRequest.Params的某个地方尝试读取我的Principal对象的Identity属性(HttpContext.User)。我有一个IPrincipal的自定义实现,它没有初始化Identity对象 - 而且你有它。

非常感谢那些花时间阅读我的问题的人。