Asp.net mvc 3 MVC3 createoredit模板现在在可为null的int字段上爆炸

Asp.net mvc 3 MVC3 createoredit模板现在在可为null的int字段上爆炸,asp.net-mvc-3,razor,scaffolding,asp.net-mvc-scaffolding,Asp.net Mvc 3,Razor,Scaffolding,Asp.net Mvc Scaffolding,在对我的项目进行一些升级后,我生成的“\u createoredit.cshtml”文件突然出现以下情况: 传递到字典中的模型项为null,但此字典 需要类型为“System.Int32”的非空模型项。说明: 在执行当前操作期间发生未处理的异常 网络请求。有关详细信息,请查看堆栈跟踪 错误及其在代码中的起源 异常详细信息:System.InvalidOperationException:模型项 传递到字典的值为null,但此字典需要 类型为“System.Int32”的非空模型项 源错误: 第2

在对我的项目进行一些升级后,我生成的“\u createoredit.cshtml”文件突然出现以下情况:

传递到字典中的模型项为null,但此字典 需要类型为“System.Int32”的非空模型项。说明: 在执行当前操作期间发生未处理的异常 网络请求。有关详细信息,请查看堆栈跟踪 错误及其在代码中的起源

异常详细信息:System.InvalidOperationException:模型项 传递到字典的值为null,但此字典需要 类型为“System.Int32”的非空模型项

源错误:

第273行:
第274行:
第275行:@Html.EditorFor(model=>model.NumOfStores)
第276行:@Html.ValidationMessageFor(model=>model.NumOfStores)
第277行:
它引用的字段是可为null的int类型。 这在之前就已经奏效了(生产版本仍然运行良好),我对项目所做的更改不应该涉及到它所使用的任何东西,所以现在我不明白为什么会这样

更新1-从模型中添加字段def

[DisplayName("Number of Stores (if applicable)")]
public Nullable<int> NumOfStores { get; set; }
[DisplayName(“门店数量(如适用)”)]
公共可为空的NumOfStores{get;set;}

我还验证了所有可为null的值类型都存在相同的问题。

尝试为模板指定名称

@Html.EditorFor(model => model.NumOfStores, "NumStoresTemplate")

更多信息(来自MVC2,但我认为它适用于您的情况)

我最后为int32和double添加了自定义编辑器模板以使其正常工作。我意识到我正在使用的项目中添加了telerik控件,所以虽然我不确定如何调试东西,但似乎他们以某种方式参与了默认模板

另外-model.NumOfStores是可为null的int类型,因此在这里应该可以。这是我第一次乱搞mvc表单和模板,它让我感到多么脆弱和公正。。它们是不好的。而且-null对我来说是一个合法值,零是另一个值,所以我不能默认为零。对不起,我想我误解了这个问题。在~/Views/Shared/EditorTemplates上是否安装了自定义模板?将可为空的模型项绑定到视图时可能会出现问题。另外,能否发布视图模型的代码?您的模型定义中确实有一个可为null的int,对吗?我认为传递给视图的内容与视图期望的内容不匹配。[DisplayName(“存储区数量(如果适用)”)]public Nullable NumOfStores{get;set;}
@Html.EditorFor(model => model.NumOfStores, "NumStoresTemplate")