MVC3模型绑定问题

时间:2013-05-13 10:21:41

标签: c# asp.net asp.net-mvc asp.net-mvc-3

我在MVC 3中遇到了这个奇怪的问题。

我有一个强类型视图和一个具有SaveMethod(Employee emp)的控制器。

但是当我点击SAVE时,它没有按下Save方法并抛出错误。

我认为可能存在模型活页夹问题。但我怎么知道哪个属性是个问题?

我很难从50找到一个房产

例外:

Unable to cast object of type 'System.Int32' to type 'System.String'.

来源:System.ComponentModel.DataAnnotations

栈跟踪

at System.ComponentModel.DataAnnotations.StringLengthAttribute.IsValid(Object value)    at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value,ValidationContext validationContext)    at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value,ValidationContext validationContext)    在System.Web.Mvc.DataAnnotationsModelValidator.d_ 1.MoveNext()    在System.Web.Mvc.ModelValidator.CompositeModelValidator.d _5.MoveNext()    在System.Web.Mvc.DefaultModelBinder.OnModelUpdated(ControllerContext controllerContext,ModelBindingContext bindingContext)    在System.Web.Mvc.DefaultModelBinder.BindComplexElementalModel(ControllerContext controllerContext,ModelBindingContext bindingContext,Object model)    在System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext,ModelBindingContext bindingContext)    在System.Web.Mvc.DefaultModelBinder.BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext)    在System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext,ParameterDescriptor parameterDescriptor)    在System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext,ActionDescriptor actionDescriptor)    在System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,String actionName)

如何检查导致此问题的属性?

2 个答案:

答案 0 :(得分:9)

在我看来,你已经将[StringLength]应用于模型的整数属性:

public class MyModel {
  [StringLength]
  public int SomeValue { get; set; }
}

这会引发你所看到的那种错误。

答案 1 :(得分:3)

如果您将StringLength属性应用于int类型的属性,请查看您的模型。