首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nullable<>作为ViewPage的TModel

Nullable<>作为ViewPage的TModel
EN

Stack Overflow用户
提问于 2009-06-18 11:52:20
回答 2查看 300关注 0票数 1

哪些Nullable<>类型不允许作为System.Web.Mvc.ViewPage泛型的TModel参数传递,可能的原因是什么?这有时可能很方便。

在ASP.NET MVC源码中定义了TModel应该是什么类:

代码语言:javascript
复制
public class ViewPage<TModel> : ViewPage where TModel : class

但可空类型是值类型。也许定义可以少一些限制。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-18 16:44:27

此时这样做是没有意义的,因为ViewPage总是在内部验证模型是否是T的实例。您永远不会因为这种检查而传递null。

至于为什么一开始就不允许使用结构类型,有很多原因。其中包括:(a)这可能会鼓励人们为模型使用自定义结构类型,这几乎从来都不是正确的做法;(b)不能将结构类型作为参数传递给Controller.UpdateModel();(c)模型应该具有引用相等,以便过滤器可以检查和修改它们;(d)内置的结构类型(如int等)通常作为模型对象本身并不有用;(e)结构类型不支持继承,例如将int模型传递到ViewPage会爆炸。

事实证明,(c)可能不是问题,因为结构类型应该是不可变的,但其他项目需要在支持结构类型之前给予充分的考虑和设计决策。支持这些的后果比仅仅消除对ViewPage的约束要大得多。

票数 3
EN

Stack Overflow用户

发布于 2009-06-18 11:55:22

单个值并不是真正的“模型”--您可以只使用字典和强制转换?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1012229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档