2008-10-07 51 views
6

我正在開發使用MVC預覽5.我已經使用類型的視圖的應用遇到了不正確的錯誤類型。在ASP.NET MVC我呈現頁面時正確類型的對象

設置調試=「假」之後,我發現我收到出錯的形式:

「傳遞到 字典型號產品 型「blah.Models.UserAdmin的。 IndexData」但 本詞典需要 類型的模型項目 ‘blah.Models.OrganisationAdmin.IndexData’」。

當調試是我不明白這些錯誤。

它看起來像的MVC框架緩存由視圖名稱的意見。如果我有使用具有相同名稱的視圖中的兩個動作(儘管是在不同的命名空間),我發現只有首先執行的操作是成功的,第二個總是導致這個錯誤。

例如,我有一個UserAdminController和OrganisationAdminController。

  • 兩者都有'索引'動作。

  • 兩者都使用一個稱爲「的Index.aspx」(每個包含在控制器的視圖文件夾;查看/ UserAdmin /的Index.aspx和查看/ OrganisationAdmin.Index.aspx)圖。

  • 這兩種觀點都被鍵入,並利用模型稱爲IndexData(blah.Models.UserAdmin.IndexData和blah.Models.OrganisationAdmin.IndexData)

如果我第一次訪問OrganisationAdmin /指數,我覺得任何後續嘗試查看UserAdmin/Index都會導致上面顯示的錯誤消息。相反,如果我先訪問UserAdmin/Index(在重新啓動應用程序之後),我發現導航到OrganisationAdmin/Index導致等效的錯誤(類型相反)。

我重命名了我的一個視圖「UserAdminIndex.aspx」,這似乎解決了這個問題。但是,這並不覺得它應該是一個問題。毫無疑問,MVC框架支持類似命名的視圖?我錯過了什麼?

感激地收到任何幫助。

桑迪

請注意,我已經看到了這個問題:「在ASP.NET MVC呈現具有正確類型對象的用戶控件,當我遇到一個不正確類型的錯誤」。我面臨着類似的問題,但我沒有使用RenderUserControl()。

堆棧跟蹤:

InvalidOperationException: The model item passed into the dictionary is of type 'blah.Models.RoleAdmin.IndexData' but this dictionary requires a model item of type 'blah.Models.UserAdmin.IndexData'.] 
    System.Web.Mvc.ViewDataDictionary`1.SetModel(Object value) +231 
    System.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary viewDataDictionary) +99 
    System.Web.Mvc.ViewPage`1.SetViewData(ViewDataDictionary viewData) +60 
    System.Web.Mvc.WebFormView.RenderViewPage(ViewContext context, ViewPage page) +64 
    System.Web.Mvc.WebFormView.Render(ViewContext viewContext, TextWriter writer) +85 
    System.Web.Mvc.ViewResult.ExecuteResult(ControllerContext context) +206 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ActionResult actionResult) +19 
    System.Web.Mvc.<>c__DisplayClass12.<InvokeActionResultWithFilters>b__f() +18 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +257 
    System.Web.Mvc.<>c__DisplayClass14.<InvokeActionResultWithFilters>b__11() +20 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +257 
    System.Web.Mvc.<>c__DisplayClass14.<InvokeActionResultWithFilters>b__11() +20 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ActionResult actionResult, IList`1 filters) +188 
    System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +386 
    System.Web.Mvc.Controller.ExecuteCore() +112 
    System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +23 
    System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7 
    System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) +107 
    System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) +39 
    System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +7 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75 
+0

您是否曾經爲此找到過修復程序?奇怪的是,儘管問題的年齡我們碰到了與描述完全相同的問題,但在MVC 3 – 2012-01-30 23:04:02

回答

1

是的,錯誤的報道。最好現在就進行調試,或者修改違規代碼(抱歉不能回憶起哪裏)。

1

我認爲你的用戶控件和視圖具有相同的名稱。

2

這個錯誤讓我發瘋。該模型正在我看法的頂部。然而該死的東西正在請求一個不同的模型。

原來在成爲佈局頁面的地方存在孤立的ModelType引用。它在我的視圖中被引用爲Layout =「〜/ Views/_layout.vbhtml」

+0

男人你值得這個答案的獎牌 – iceDragon 2017-05-10 07:43:32

相關問題