gpt4 book ai didi

c# - 更改扩展 Controller 中 ViewData 的类型

转载 作者:行者123 更新时间:2023-11-30 16:05:28 25 4
gpt4 key购买 nike

我创建了自己的 CustomController 基类,该基类继承自 Controller。同样,我创建了自己的 CustomViewData,它继承自 ViewDataDictionary。CustomController 类有一个接受 CustomViewData 作为参数的构造函数。

我的所有 Controller 都继承自 CustomController 并传入其继承的 CustomViewData。现在我希望能够从我的 Controller 中调用 this.ViewData 并取回我在 Controller 中传入的 View 数据。目前我得到一个 ViewDataDictionary (从 Controller 类)。所以我丢失了我的类型信息。

如何在 CustomController 派生类中保留 ViewData 属性上的类型信息,而不将其包装在为我进行装箱的 get/set 中?

最佳答案

ViewData 属性在 ControllerBase 类中定义,您无法覆盖它,但您可以这样做:

public class CustomController : Controller {

public new CustomViewData ViewData { get; set; }

}

但是请注意,如果您像这样访问 CustomController 实例

Controller c = myCustomControllerInstance;
CustomViewData cvd = c.ViewData;

您的代码将无法编译,因为您将使用 ViewData 属性的默认实现,并且它将返回一个 ViewDataDictionary 实例。

关于c# - 更改扩展 Controller 中 ViewData 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/925719/

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