繁体   English   中英

MVC错误的视图/模型被调用

[英]MVC wrong view/model being called

我有一个mvc4应用程序,在正常情况下工作正常。

但是,在这种情况下,我将描述我遇到以下错误:

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上)

  1. 登录到应用程序(调用LoginController和LoginModel,然后立即重定向到HomeController / HomeModel)
  2. 点击退格/后退按钮->用户返回登录页面
  3. 尝试使用错误的用户名/密码对再次登录。 在正常情况下,这只会在屏幕上显示错误消息,但是在这里我得到了例外。

在我看来,由于某种原因,mvc正在调用HomeController的Index.cstml,而不是IndexController

但是,在Chrome上,当我按下退格键时,我会自动重定向到HomeController ,而不是登录页面,因此无法重现它。 原因是,显然,chrome在击退空格时会对LoginController发出额外的服务器请求,而在FF和IE上根本不会发生; 由于用户仍在通过身份验证,因此我将根据该额外请求将其重定向到HomeController。 如果是FF和IE,在退格上执行该请求,我也可以接受...

我强调,除了这种退格方案外,该应用程序运行良好,因此似乎没有任何重大错误,如错别字或在代码上调用了错误的模型。

我调试了场景,但是到目前为止找不到任何东西,没有调用HomeController,只是LoginController,应该将其重定向到它的Index.cshtml。

传递到字典中的模型项的类型为softWrench.sW4.Web.Models.LoginHandler.LoginHandlerModel,但是此字典需要一个类型为softWrench.sW4.Web.Models.Home.HomeModel的模型项。

此错误仅表示您需要HomeModel时传递了LoginHandlerModel 将模型传递给视图strongly type绑定视图之间不匹配

最后,我可以修复它。 在这里很难完全描述它,对此,我很抱歉。

我忘了提到我有一个RazorViewEngine的重写的impl,它正在检查未通过身份验证的用户以返回空的剃刀模板。

但是,在我描述的场景中,用户仍然经过身份验证,因此,它返回了错误的剃刀模板而不是null。 那个剃刀模板(Layout.cshtml)是问错模型的罪魁祸首。

我对包含SignIn的ViewPath进行了额外检查,以返回null并覆盖了这种额外情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM