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可能ですが、メタデータクラスのために例外がスローされます。