asp.net mvc动态验证取决于操作

时间:2012-02-16 19:42:51

标签: asp.net-mvc validation

我有一个像这样的视图模型:

public class AccountView {
  public int AccountId { get; set; }
  [Required]
  public string AccountName { get; set; }
}

但我希望只有当操作是“编辑”而不是“创建”时才需要AccountName字段。如何在asp.net mvc3中完成?

感谢。

2 个答案:

答案 0 :(得分:1)

或者您可以只使用两个不同的ViewModel:一个用于编辑操作,另一个用于创建操作。 即使您重复代码(显然不是所有代码),我认为这不是一个坏习惯,因为ViewModel应该与View it的建模相关联。

答案 1 :(得分:0)

您可以实施自定义验证程序。进入Validate方法后,您将可以访问诸如(((System.Web.Mvc.ModelValidator)(this)))之类的属性.ControllerContext.Controller,您可以在其中查看ContollerContext,ViewData等。您还可以访问像

这样的属性
  • (((System.Web.Mvc.ModelValidator)(本)))。ControllerContext.RequestContext
  • (((System.Web.Mvc.ModelValidator)(本)))。ControllerContext.HttpContext
  • (((System.Web.Mvc.ModelValidator)(本)))。ControllerContext.RouteData