ASP.NET MVC 2 - 重新评估ModelState

时间:2010-07-21 04:08:53

标签: asp.net-mvc

我有一个由默认模型Binder绑定的模型。 它根据DataAnnotations.RequiredAttribute将属性注册为无效 同一模型上的另一个属性有一个setter方法,该方法为该字段派生一个有效值并设置它。

但原始ModelState错误仍然存​​在。
主要问题:我可以重新评估ModelState吗?
子问题:有更好的解决方案吗?

修改
这是绑定模型的简化示例(对于子问题)

public class Booking
{
    public List<Participant> Participants {get;set;}
    [Required]
    public string MainEmail {get;set;}
    private int _mainParticpantIndex;
    [Required]
    public int MainParticipantIndex
    {
        get { return _mainParticpantIndex; }
        set 
        {
            _mainParticpantIndex= value;
            MainEmail = Particpants[value].Email
        }
    }
}
public class Participant
{
    // not required for every participant.
    public string Email {get;set;}
    [Required]
    public string Name {get;set;}
}

1 个答案:

答案 0 :(得分:1)

我认为在这种情况下,您应该从Required中移除MainEmail,或者甚至根本不能将其设置为可设置。不确定代码的其余部分是如何工作的,但正如我所看到的那样,它总是具有主参与者的电子邮件的价值,这也是必需的。

除非您希望能够覆盖主要电子邮件与主要参与者的不同。在这种情况下,您可能需要修改MainParticipantIndex

的setter

修改

根据您的评论,您无法使用正常的Required属性真正做到您想要的。 MVC框架无法知道您希望“必需”流向另一个对象。您必须编写自己的实体级验证,以强制执行您的规则。