2016-05-06 18 views
0

asp.net検証でデータアノテーションの検証を無視する方法はありますか?以下のケースでasp.netでデータアノテーションの検証を無視する方法MVC

ルック:

私はメッセージエンティティ

public class MessageMetaData 
{ 
    [Required(ErrorMessage="This field is required")]   
    public int[] To { get; set; } 

    [Required(ErrorMessage = "This field is required")]   
    public string Title { get; set; } 

    [Required(ErrorMessage = "This field is required")]   
    public string Body { get; set; } 
} 

ために、このメタデータクラスを持っており、これが私のメッセージクラスである:私は保存したい場合は

public partial class message 
{ 
    public message() 
    { 
     this.FilesRelatedToTheMessage = new HashSet<file>(); 
     this.Receivers = new HashSet<MessageReceiversConnector>(); 
    } 

    public int id { get; set; } 
    public string Title { get; set; } 
    public string Body { get; set; } 
    public Nullable<int> C_From { get; set; } 
    public Nullable<int> AreaId { get; set; } 
    public Nullable<int> Project { get; set; } 
    public string Status { get; set; } 
    public System.DateTime DateOfCreation { get; set; } 

    public virtual ICollection<file> FilesRelatedToTheMessage { get; set; } 
    public virtual EventsArea EventsArea { get; set; } 
    public virtual project ProjectTheMessageRelatedTo { get; set; } 
    public virtual ICollection<MessageReceiversConnector> Receivers { get; set; } 
    public virtual user Sender { get; set; } 
} 

[MetadataType(typeof(MessageMetaData))] 
public partial class message 
{ 
    public int[] To { get; set; } 
    public int[] Areas { get; set; } 
    private MessageDTO mdto = new MessageDTO(); 
    public MessageDTO MDTO { get { return this.mdto; } set { this.mdto = value; } } 
} 

メッセージをドラフトメッセージとして送信すると、プロパティの1つが送信されないことがあります。この問題を解決する方法はありますか?

編集:

これは)それは(context.SaveChangesにメッセージを投げ、私のDraftMessageアクションここ

public string DraftMessage(message draftMessage, string status) 
    { 
     if (status == "new") 
     { 
      draftMessage.Status = "DR"; 
      draftMessage.DateOfCreation = DateTime.UtcNow; 
      draftMessage.C_From = CurrentUser.Id; 
      context.messages.Add(draftMessage); 
      foreach (int receiverId in draftMessage.To) 
      { 
       if (context.users.Any(user => user.user_id == receiverId && (user.DepartmentOfTheUser.Company == CurrentUser.Company || user.DepartmentOfTheUser.CompanyOfTheDepartment.CompanyCustomers.Any(cus => cus.customer_of == CurrentUser.Company) || user.DepartmentOfTheUser.CompanyOfTheDepartment.CompanySuppliers.Any(supp => supp.supplier_of == CurrentUser.Company)))) 
       { 
        context.MessageReceiversConnectors.Add(new MessageReceiversConnector() { MessageId = draftMessage.id, ReceiverId = receiverId, MessageStatus = "DR" }); 
       } 
      } 
     } 

     context.SaveChanges(); 

     return "draft"; 
    } 

です。検証のために、データベースのフィールドはすべてnull可能ですが、メタデータクラスのために例外がスローされます。

答えて

1

多分、2つのViewModelを作る価値があります。 1つはドラフトメッセージ用で、もう1つは送信するメッセージ用です。

関連する問題