Как редактировать проверку моделей, сгенерированных EF из базы данных? - PullRequest
0 голосов
/ 16 ноября 2011

У меня есть база данных с таблицей пользователей. Я генерирую EF .edmx из базы данных и затем могу получить доступ к пользователям через:

public ActionResult Index()
    {
        var obj = context.Users.ToList();
        return View(obj);
    }

Что хорошо, моя проблема в том, что когда я делаю правку:

public ActionResult Edit(Guid id)
    {
        var obj = context.Users.Where(c => c.UserId == id).SingleOrDefault();
        return View(obj);
    }

Понятия не имею, как получить доступ к модели пользователя, чтобы добавить сообщение проверки? Я надеялся увидеть что-то вроде:

public class User
{
    [Required]
    [Display(Name = "username")]
    public string UserName { get; set; }
{

Но я не знаю, и я новичок, и я не очень понимаю, как получить доступ / редактировать эту модель при генерации из базы данных. Буду признателен за любые учебные советы.

Ответы [ 3 ]

3 голосов
/ 16 ноября 2011

В том же пространстве имен, что и ваша модель, вы можете создать частичный класс с метаданными:

   [MetadataType(typeof(IPConfigMetadata))]
    public partial class IPConfig
    {
        internal sealed class IPConfigMetadata
        {
            private IPConfigMetadata() { }

            [RegularExpression(@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b", ErrorMessage = "Must be a valid IP Address")]
            public string CommanderIP { get; set; }

            [Range(1024, 65535)]
            public int IPPort { get; set; }

        }
    }
3 голосов
/ 16 ноября 2011

посмотрите, если бы вы сначала использовали код, вы могли бы использовать то, что предложил пользователь MISHA, сначала вы используете базу данных (поскольку вы генерируете edmx из БД).В этом случае для автоматической проверки mvc - вы должны предоставить метаданные модели.

Вы можете создать метаданные, как показано ниже

    namespace Your_Models_NameSpace
    {
        [MetadataType(typeof(UserMetaData))]
        public partial class User
        {        
            public class UserMetaData
            {
                [DisplayName("User Name")]
                [Required(ErrorMessage = "Please provide a valid username")]
                public object UserName { get; set; }
          }
       }
}
1 голос
/ 16 ноября 2011

Проверьте это сообщение.

Вы можете сделать что-то вроде:

public class User
{
    [Required(ErrorMessage = "Username is required")]
    public string UserName { get; set; }
{

Тогда в вашем действии вы сделаете:

public ActionResult Edit(User user)
    {
        if(ModelState.IsValid)
        {
             // Save user
        }
        return View(user);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...