我有一个mvc4应用程序,它在常规场景中运行得很好。
然而,在我将描述的场景中,我得到了以下bug:
The model item passed into the dictionary is of type
softWrench.sW4.Web.Models.LoginHandler.LoginHandlerModel', but this dictionary
requires a model item of type 'softWrench.sW4.Web.Models.Home.HomeModel'.复制它(仅在FF或IE上)
在我看来,由于某种原因,mvc调用的是HomeController的HomeController,而不是IndexController的.
然而,在Chrome上,当我点击后台时,我会自动重定向到HomeController,而不是登录页面,因此没有办法复制它。原因是,显然chrome在返回空间被击中时会向LoginController发出额外的服务器请求,而这在FF和IE上根本不会发生;由于用户仍然经过身份验证,我将在该额外请求上将他重定向到HomeController;如果FF和IE在后台空间上执行了该请求,我也会同意.
我强调,该应用程序运行良好,除了这个后台场景,所以似乎没有任何严重的错误,如打字或错误的模型被调用的代码。
我调试了这个场景,但至今还没有找到任何东西,HomeController没有被调用,只有LoginController,这应该被重定向到它的Index.cshtml .
发布于 2014-12-30 12:50:50
最后,我可以修好它。在这里很难完全描述它,为此我感到很抱歉。
我忘了提到,我有一个过激的RazorViewEngine,这是检查用户没有认证返回一个空剃须刀模板。
但是,在我描述的场景中,用户仍然经过身份验证,因此返回错误的剃刀模板而不是null。那个剃须刀模板(Layout.cshtml)是问错型号的罪魁祸首。
我对包含ViewPath的SignIn进行了额外的检查,以返回null,这涵盖了额外的情况。
发布于 2014-12-30 12:47:01
传递到字典中的模型项为softWrench.sW4.Web.Models.LoginHandler.LoginHandlerModel,类型,但此字典需要一个类型为softWrench.sW4.Web.Models.Home.HomeModel的模型项。
此错误仅意味着在需要LoginHandlerModel时传递HomeModel。向视图传递模型与向strongly type绑定视图传递模型不匹配。
https://stackoverflow.com/questions/27705513
复制相似问题