gpt4 book ai didi

c# - ASP.NET MVC 3 通用显示模板

转载 作者:太空狗 更新时间:2023-10-29 20:55:31 25 4
gpt4 key购买 nike

我刚刚开始了一个使用 ASP.NET MVC 3 的项目。我正在现有的对象系统之上构建,所以我要做的第一件事就是为各种类型定义显示和编辑器模板存在。

是否可以在 MVC 中定义带有通用参数的 DisplayTemplate?例如,我们有一个 BitString<T>类以枚举作为通用参数并表示包装提供的枚举的选项列表。我希望我可以定义一个处理所有 BitString 实例的显示/编辑器模板。

我目前正在使用 Razor 来获取我的 View ,但我不介意与 ascx(或直接 C#,如果有办法的话)混合搭配来实现这一点

谢谢

编辑:我认为这可能是这个问题的重复......但它已经一年半了,所以也许有人在这一点上有更好的答案? Generic partial view: how to set a generic class as model?

最佳答案

您描述的问题是泛型的基本原则。

ICollection<Object>不是 ICollection<String> 的基类即使StringObject 的子类.这是在编译时完成的,因此您基本上得到了两个不同的 ICollection 类定义。因此它们不能被类型转换。 (SO 的聪明人请随时纠正我的任何不准确之处)

在 MVC3 中,我通过执行以下操作解决了这个问题:

class Container{
/* Stuff here */
}

class Container<T> : Container{
T Data {get;set;}
}

那么在你看来

@model Container 

当您只需要普通的东西而不知道泛型类型时。

@model Container<SomeDataType>

当您需要通用类型数据时。

用例:

我创建了一个“ModelContainer”类,其中存储了我的模型,以及一组可以部分显示在页面中的错误消息。由于 partial 可以在每个页面上使用,它不知道 Generic 类型是什么,因此需要这种解决方法。

如果您在不知道其类型的情况下尝试访问通用数据,则不能使用此方法。希望这能解决您的问题。

关于c# - ASP.NET MVC 3 通用显示模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5286706/

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