首页 新闻 赞助 找找看

MVC3中强类型视图数据类型转换出错

0
悬赏园豆:5 [已解决问题] 解决于 2012-03-14 13:31

这是在Domain中的实体模型

public class Employee
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ID { get; set; }
}

我想在管理员工时员工编号主键可被编辑其他的字段省略。

下面是视图中使用的ViewModel

 public class BiographyDetial
{
[Display(Name = "员工编号")]
[StringLength(15, ErrorMessage = "员工编号不能超过15个字符")]
[RegularExpression(@"^[0-9]*$", ErrorMessage = "必须输入数字")]
public int ID { get; set; }
}

然后在控制器中有两个Create的action,一个是Get请求,一个是Post请求。视图中使用ViewModel,在Post请求中用ViewModel来接收数据然后转换成Employee类型进行员工数据的添加。所有Employee这个Model不会进行到视图中。

下面是我的视图:

  <div class="editor-label">
@Html.LabelFor(model => model.ID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ID)
@Html.ValidationMessageFor(model => model)
</div>

我在Post的那个Create中设置端点,当我提交表单时并未运行到端点出,而是出现下面的异常:

“/”应用程序中的服务器错误。

无法将类型为“System.Int32”的对象强制转换为类型“System.String”。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidCastException: 无法将类型为“System.Int32”的对象强制转换为类型“System.String”。

源错误:

执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

如果我在ViewModel中删除这个ID或将其类型用换成string类型,那么就能运行到端点出而不出现异常。我想问题是出在ViewModel和视图中的类型转换上,那么怎么处理呢?我想使用Int类型而不是使用string来替换。



凡一二三的主页 凡一二三 | 初学一级 | 园豆:85
提问于:2012-03-14 10:23
< >
分享
最佳答案
0
StringLength是修饰字符串类型的吧,你把这个地方去掉试试:
[StringLength(15, ErrorMessage = "员工编号不能超过15个字符")]
收获园豆:5
artwl | 专家六级 |园豆:16736 | 2012-03-14 13:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册