Проблема с DataAnnotations в частичном классе
Так что в моем проекте MVC Project.Repository у меня есть
[MetadataType(typeof(FalalaMetadata))]
public partial class Falala
{
public string Name { get; set; }
public string Age { get; set; }
internal sealed class FalalaMetadata
{
[Required(ErrorMessage="Falala requires name.")]
public string Name { get; set; }
[Required(ErrorMessage = "Falala requires age.")]
public string Age { get; set; }
}
}
Я использую Falala в качестве модели в своем Project.Web.AccountControllers и использую метод для выявления нарушений. Проверка работала, когда у меня было
public class Falala
{
[Required]
public string Name { get; set; }
[Required(ErrorMessage="error")]
public string Age { get; set; }
}
но не после использования частичного класса сверху. Мне действительно нужно использовать частичный класс. Что я здесь не так делаю?
Спасибо!
4 ответа
Может ли Internal на вложенном классе быть причиной...?
У меня была похожая проблема, и казалось, что все сводилось к тому, что я не делаю отдельные поля в классе вложенных метаданных общедоступными.
Я столкнулся с подобной проблемой и, наконец, начал работать, поместив и класс Model, и класс "метаданных" в одно и то же пространство имен, хотя мои ссылки казались нормальными. Я вроде.net noob, хотя, так что я не совсем доволен пространствами имен, может быть что-то еще.
Я склонен использовать Metadata
классы как следует.
[MetadataType(typeof(FalalaMetadata))]
public partial class Falala
{
public string Name { get; set; }
public string Age { get; set; }
}
public class FalalaMetadata
{
[Required(ErrorMessage="Falala requires name.")]
public string Name { get; set; }
[Required(ErrorMessage = "Falala requires age.")]
public string Age { get; set; }
}
Который работает хорошо для меня.
Следующее также должно работать (и это лучший способ реализовать классы метаданных):
[MetadataTypeAttribute(typeof(Falala.FalalaMetaData))]
public partial class Falala
{
internal sealed class FalalaMetadata
{
[Required(ErrorMessage="Falala requires name.")]
public string Name { get; set; }
[Required(ErrorMessage = "Falala requires age.")]
public string Age { get; set; }
}
}
Не уверен, что это поможет, но у меня была похожая проблема, и я потратил на это дни. В конце это было только незначительное изменение, которое добилось цели для меня.
Я изменился UnobtrusiveJavaScriptEnabled
ложь в конфигурационном файле
Удачи