#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;
}
}
Надеюсь, это соответствует вашим потребностям.