gpt4 book ai didi

c# - 继承和强类型 View

转载 作者:太空宇宙 更新时间:2023-11-03 22:12:13 24 4
gpt4 key购买 nike

我有一个包含一些属性和方法的抽象类 foo。我还有许多实现 foo 的类,例如 barfoofoobar

为了在多个不同的 View 上安全地重写相同的代码,我创建了一个强类型的分部 View

@model List<foo>
@foreach (var x in Model) {
<div> x.SomeProperty </div>
}

可悲的是,当我尝试调用此 View 时

@{ Html.RenderPartial("PartialView", List<Foobar>); }

出现以下错误

传入字典的模型项的类型为 System.Collections.Generic.List1[Namespace.Models.Foobar]',但该字典需要一个类型为“System.Collections.Generic.List”的模型项1[Namespace.Models.Foo]'。

我尝试做的事情是否可行,还是我只需要复制代码?

最佳答案

完全按照您正在尝试的方式进行尝试是不可能的。如果您所做的只是枚举集合(而不是修改它),您可以更改为以下内容,应该没问题:

@model IEnumerable<foo>
@foreach (var x in Model) {
<div> x.SomeProperty </div>
}

如果您认真考虑一下,这个问题很容易理解。

您的模型是 List<foo> .这意味着应该完全有可能说 Model.Add(new Barfoo()); .

您正在尝试传递 List<Foobar>作为模型。显然,Model.Add(new Barfoo());在那种情况下会失败,因为这是不可能的。

使用像 IEnumerable 这样的协变接口(interface)可以让您完全按照自己的需要做事。

关于c# - 继承和强类型 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228542/

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