我需要一些帮助......
我有这个简单的模型:
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 :(得分: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");
。