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