我像这样返回 -6ren">
gpt4 book ai didi

asp.net-mvc - 传入字典的模型项的类型为

转载 作者:行者123 更新时间:2023-12-02 17:48:03 26 4
gpt4 key购买 nike

我有一个我理解的错误,但无法找到以正确的方式解决的方法。

我有一个 MasterPage,我从该 MasterPage 中调用:

<% Html.RenderPartial("Tags"); %>

标签是一个强类型 View ,如下所示:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<JegManglerEn.Controllers.CategoryCount>>" %>

我像这样返回 PartialView:

return View("Tags", result);

结果正确且类型为:

List<CategoryCount>

错误是这样的:

传递到字典中的模型项的类型为“System.Collections.Generic.List1[JegManglerEn.Item]”,但此字典需要类型为“System.Collections.Generic.IEnumerable<”的模型项1[JegManglerEn.Controllers.CategoryCount]'。

所以设置是这样的:

MasterPage 加载一个采用 JegManglerEn.Item 集合的 View,并尝试加载一个采用 JegManglerEn.Controllers.CategoryCount 集合的 PartialView...但失败了。

我知道它与 RenderPartial 方法有关,因为如果我将其更改为 RenderAction,效果会很好。

如果你们有答案,我就可以跳过查看 MVC 源或启动 Reflector。

谢谢!

最佳答案

当您调用 Html.RenderPartial 的单参数重载时,您将隐式地将父 View 的整个模型传递给局部 View 。这不起作用,因为 View 期望的模型类型不匹配。

让 RenderPartial 在您的上下文中工作的最简单方法是创建一个包含标签和页面模型数据的复合模型类型,然后调用重载,将父模型的一部分传递给局部模型:

Html.RenderPartial("Tags", Model.Tags);
话虽这么说,我认为 RenderAction 最有可能是这里的方法,因为它可以更轻松地避免 Controller 中的重复代码(当然假设您以相同的方式为所有继承的页面加载标签数据)来自相关母版页)。

关于asp.net-mvc - 传入字典的模型项的类型为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4293344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com