【发布时间】:2016-02-20 03:38:36
【问题描述】:
我目前正在 Umbraco 中使用 MVC 构建预订表单。我关心的属性如下:
public class BookingModel{
public bool Previous { get; set; }
public bool Next { get; set; }
public int Stage { get; set; }
public int Price { get; set; }
public Tour_Instance Tour_Instance { get; set; }
public Passenger_Count Passenger_Count {get; set;}
public Passenger_Details Passenger_Details { get; set; }
public BookingConfirmation Booking_Confirmation { get; set; }
}
public class Passenger_Details{
[UmbracoDisplayName("Booking.Display.PhoneMobile")]
public string Phone_Mobile { get; set; }
[UmbracoDisplayName("Booking.Display.PhoneHome")]
public string Phone_Home { get; set; }
[UmbracoDisplayName("Booking.Display.PhoneWork")]
public string Phone_Work { get; set; }
}
UmbracoDisplayName 注释只是从 Umbraco 中的字典中检索一个值,该值会更改显示在每个项目旁边的标签的值。理想情况下,我想创建一个自定义数据注释,以确保上面显示的至少一个属性(Phone_mobile、Phone_Home、Phone_Work)具有值。
目前我正在控制器中执行以下操作:
if (string.IsNullOrWhiteSpace(model.Passenger_Details.Phone_Mobile) && string.IsNullOrWhiteSpace(model.Passenger_Details.Phone_Home) && string.IsNullOrWhiteSpace(model.Passenger_Details.Phone_Work))
{
ModelState.AddModelError("Passenger_Details.Phone_Mobile", Umbraco.GetDictionaryValue("Booking.Validation.OnePhoneRequired"));
ModelState.AddModelError("Passenger_Details.Phone_Home", string.Empty);
ModelState.AddModelError("Passenger_Details.Phone_Work", string.Empty);
}
这可以完成工作,但并不真正符合惯例。我的问题是,我将如何创建数据注释,以便它比较具有注释的模型的所有属性并检查值是空还是空?
我知道如何创建自定义注释,它基本上只是我必须遵循的逻辑,我正在努力想出。
任何帮助将不胜感激。
【问题讨论】:
标签: c# .net model-view-controller umbraco data-annotations