2016-05-06 7 views
0

Gibt es eine Möglichkeit, Daten Annotation Validierung in asp.net Validierung zu ignorieren?Wie ignoriert man Daten Annotation Validierung in asp.net MVC

Blick auf den folgenden Fall:

Ich habe diese Metadatenklasse für eine Nachrichteneinheit

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; } 
} 

und das ist meine Botschaft Klasse:

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; } } 
} 

Als ich speichern möchten Nachricht als eine Entwurfsnachricht wird eine der Eigenschaften möglicherweise nicht gesendet. Gibt es eine Möglichkeit, mit diesem Problem umzugehen?

Edit:

das ist mein DraftMessage Aktion

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"; 
    } 

hier wirft es Nachricht auf context.SaveChanges(); Aufgrund der Validierung sind die Felder in der Datenbank alle nullbar, aber aufgrund der Metadatenklasse wird eine Ausnahme ausgelöst.

Antwort

1

Vielleicht lohnt es sich, zwei ViewModels zu machen. Eine für den Entwurf einer Nachricht und eine weitere für die Nachricht, die Sie senden möchten.

Verwandte Themen