MVC3 createoredit模板现在炸毁了可空的int字段

时间:2011-11-29 16:03:04

标签: asp.net-mvc-3 razor scaffolding asp.net-mvc-scaffolding

在对我的项目进行一些升级后,我的生成的“_createoredit.cshtml”文件突然爆炸了:

  

传入字典的模型项为null,但是这个字典   需要一个类型为“System.Int32”的非null模型项。描述:   在执行当前期间发生了未处理的异常   网络请求。请查看堆栈跟踪以获取更多信息   错误以及它在代码中的起源。

     

异常详细信息:System.InvalidOperationException:模型项   传入字典是null,但这个字典需要一个   “System.Int32”类型的非null模型项。

     

来源错误:

Line 273:</div> 
Line 274:<div class="editor-field"> 
Line 275:@Html.EditorFor(model => model.NumOfStores)
Line 276:@Html.ValidationMessageFor(model => model.NumOfStores)
Line 277:</div>

它引用的字段是可以为null的int类型。 这只是之前工作(生产版本仍然正常运行),我对项目所做的更改不应该触及这个使用的任何东西,所以现在我无法弄清楚为什么这会爆炸。

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

[DisplayName("Number of Stores (if applicable)")]
public Nullable<int> NumOfStores { get; set; }

此外,我已经验证所有可以为空的值类型都存在同样的问题。

2 个答案:

答案 0 :(得分:1)

尝试为模板指定名称。

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

更多信息(来自MVC 2,但我认为它适用于您的情况)http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html

答案 1 :(得分:0)

我最终为int32添加了自定义编辑器模板,并使用了两倍来使其工作。我意识到我正在使用的项目中添加了telerik控件,所以我认为我不确定如何调试,看起来他们正在以某种方式参与默认模板。