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

在ASP.NET MVC源中定义了TModel应该是一个类:

public class ViewPage<TModel> : ViewPage where TModel : class

但Nullable类型是值类型。也许定义可能限制性较小......

有帮助吗?

解决方案

目前正在进行此工作是没有意义的,因为ViewPage&lt; T&gt;内部始终验证模型是否是T的实例。由于此检查,您永远无法传递null。

至于为什么首先不允许结构类型,有很多原因。其中:(a)它可能会鼓励人们为模型使用自定义结构类型,这几乎不是正确的事情; (b)您不能将结构类型作为参数传递给Controller.UpdateModel(); (c)模型应具有参考相等性,以便过滤器可以检查和修改它们; (d)内置的结构类型如int等,通常作为模型对象本身无用; (e)结构类型不支持继承,例如将int模型传递给ViewPage&lt; long&gt;会爆炸。

事实证明,(c)可能不是问题,因为结构类型应该是不可变的,但是其他项要求在支持结构类型之前给予充分的思考和设计决策。支持这些的后果远远大于仅删除ViewPage&lt; T&gt;。

上的约束

其他提示

单个值实际上不是“模型”。 - 你可以使用字典和演员?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top