Модель загрузки MVC httppost в контроллер, укажите, чтобы загружать один атрибут перед другим

#c# #asp.net-mvc #entity-framework

#c# #asp.net-mvc #entity-framework

Вопрос:

У меня есть модель сущности, которая передается моему представлению с некоторыми hiddenfor и editorfor для соответствующих полей.

Когда я отправляю форму, все мои участники отлично отображаются в контроллере. Однако я расширил свою модель сущности, добавив дополнительное поле для добавления к полю.

         public string DescriptionAdd {
        get { return ""; }
        set { DescriptionHistory  = DateTime.Now.ToString("dd MMM yyyy : hh:mm tt")   " by "   Core.Authorization.LoginUser.Current.FullName   " <span style='display:none;'>"   Core.Authorization.LoginUser.Current.EmailAddress   "</span> "   value   "<br />"; }
    }
  

Хорошо, пока все кажется нормальным.

Однако, когда я нажимаю сохранить, DescriptionHistory имеет значение null. Однако, когда контроллер фактически останавливается в отладчике, DescriptionHistory имеет исходное значение.

Это наводит меня на мысль, что он загружает их в неправильном порядке. Можно ли указать, в каком порядке привязаны элементы?

Комментарии:

1. Это выглядит как очень хрупкий код, который вы создаете. Почему вы хотите сделать что-то подобное? Я не думаю, что порядок привязки является детерминированным, вероятно, это зависит от порядка переменных, размещенных обратно в форме или, возможно, в xml / json, если вы используете ajax.

2. Идея состоит в том, чтобы иметь историю заметок, которые нельзя уничтожить / изменить. Добавляется только к. Я просто решил явно добавить значение в контроллер. Идея заключается в том, что любой, кто прикоснется к нему позже, не мог забыть добавить новые данные в контроллер, и функциональность будет унаследована структурой. Однако мой вопрос заключается в том, можно ли указать порядок, чтобы избежать подобных проблем.

3. Почему бы не сделать это явно в методе действия контроллера на Post, используя метод в модели или в теле действия?

4. Какой триггер в вашем коде вызывает метод набора DescriptionAdd? не ясно.

5. Пожалуйста, опубликуйте свой класс модели сущности..

Ответ №1:

Хорошо, если я правильно понимаю, что вы хотите сохранить DescriptionHistory с некоторым системным значением в базовую таблицу в столбце описания в любое время, когда происходит сохранение.

Вот как вы можете это сделать, расширив свой исходный класс сущностей

Пример: для вашего исходного объекта, созданного, как показано ниже

 public partial class Employee
{
   public string Description
   {
      get;
      set;
   }
}
  

Вам нужно будет расширять и аннотировать с помощью нескольких настроек, вы можете выполнить свои потребности

 [MetaDataType(typeof(EmployeeMetaData))]
public partial class Employee
{
   [Column("Description")]
   public string DescriptionAdd
   {
      set { }
      get { return DateTime.Now.ToString("dd MMM yyyy : hh:mm tt")   " by "   Core.Authorization.LoginUser.Current.FullName   " <span style='display:none;'>"   Core.Authorization.LoginUser.Current.EmailAddress   "</span> "   value   "<br />"; }
   }
}

public class EmployeeMetaData
{
   [NotMapped]
   public string Description
   {
      get;
      set;
   }
}
  

Надеюсь, это соответствует вашим потребностям.