MVC3:将" Int32转换为可空的"由Html.Editorfor POST post nullable int时出错

时间:2013-01-30 11:28:00

标签: asp.net-mvc-3 post nullable editorfor type-conversion

我有使用属性的视图模型(用于过滤):

int? Id {get;set;}

在我看来,我有这样的想法:

@Html.EditorFor(m=>m.Id)

当我提交表单时,我收到错误:

Invalid cast from 'System.Int32' to 'System.Nullable`1[[System.Int32, 
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.

我不想那样做:

@Html.TextBox("Model.Id", Model.Id.HasValue ? MOdelId.Value : 0)

当我在Fiddler中检查时,参数ID有适当的值,但我甚至无法进行debbug,因为它没有进入Action方法。

你能帮助我吗?

对不起我的英文

2 个答案:

答案 0 :(得分:1)

要使调试器到达断点,首先应该通过模型绑定器。模型绑定器可以神奇地将HTTP请求中的值绑定到模型。所有解析都将在模型绑定器上进行,如果在那里失败,您将永远不会在操作方法中遇到断点。

在您的观点中尝试以下内容

@Html.EditorFor(m=>m.Id, new {name = ‘Id’, id=’Id’})

@Html.TextBoxFor(m=>m.Id)

干杯

答案 1 :(得分:0)

这就是我生成的视图的样子:

<input class="text-box single-line" id="Filter_Id" name="Filter.Id" type="text" value="">

PS:我正在使用许多其他属性(我的日期时间也可以为空)并且只有当我在这个愚蠢的int中输入值时才会出错? ; /