2012-01-29 80 views
0

我需要一些帮助,这一个....MVC3编辑在索引视图

我有这个简单的模型:

public class Candidat 
{ 

    public string LoginEmail { get; set; } 

    [Required] 
    [DataType(DataType.Text)] 
    [Display(Name = "Prénom")] 
    public string FirstName { get; set; } 

    [Required] 
    [DataType(DataType.Text)] 
    [Display(Name = "Nom")] 
    public string LastName { get; set; } 
} 

我也有一个这样的控制器:

 [Authorize] 
    public ActionResult Index(Candidat model) 
    { 
     if (model.LoginEmail == null) 
     { 
      model = null; 
      using (var db = new rhDB()) 
      { 
       MembershipUser user = Membership.GetUser(); 
       if (user != null) 
       { 
        model = (from m in db.Candidates where m.LoginEmail == user.Email select m).SingleOrDefault(); 
       } 

       if (model == null) 
       { 
        model = new Candidat(); 
        model.LoginEmail = user.Email; 
        model.Email = user.Email; 
       } 

      } 
     } 

     return View("MyProfileCandidate", model); 
    } 

如您所见,我检查用户是否是数据库中的现有记录。如果不是,我创建一个模型的新实例并设置一些默认值...然后,我将它传递给EditView。

的问题是,我的观点显示与错误的验证消息...对于所有必填字段...

当然,这是因为这些字段是空的,需要的...这似乎是视图认为我发布了一个无效的模型......有没有办法隐藏这些验证信息?

回答

0

尝试清除模型的状态,如果你打算修改某些值在POST操作模型:

[Authorize] 
public ActionResult Index(Candidat model) 
{ 
    if (model.LoginEmail == null) 
    { 
     model = null; 
     using (var db = new rhDB()) 
     { 
      MembershipUser user = Membership.GetUser(); 
      if (user != null) 
      { 
       ModelState.Clear(); 
       model = (from m in db.Candidates where m.LoginEmail == user.Email select m).SingleOrDefault(); 
      } 

      if (model == null) 
      { 
       ModelState.Clear(); 
       model = new Candidat(); 
       model.LoginEmail = user.Email; 
       model.Email = user.Email; 
      } 

     } 
    } 

    return View("MyProfileCandidate", model); 
} 

这样做的原因是,HTML助手将使用最初发布的模型状态值而不是模型中的那些。您还可以清除模型状态下的单个字段:ModelState.Remove("FirstName");