Автоматически установить DateTime в новой записи - PullRequest
2 голосов
/ 04 января 2012

Автоматическое обновление даты и времени в режиме редактирования при сохранении - это работает нормально. Я использовал следующий код для достижения этой цели ...

@Html.HiddenFor(model => model.Posted, Model.Posted = DateTime.Now)

Проблема заключается в создании новой записи. Я пытаюсь реализовать автоматический ввод даты и времени, однако приведенный выше код не работает?

Отображаемая ошибка:

Исключение NullReferenceException не было обработано кодом пользователя (ссылка на объект не установлен для экземпляра объекта

следующий код от контроллера:

    //
    // GET: /cars/Create

    public ActionResult Create()
    {
        return View();
    }

    // POST: /cars/Create



    [HttpPost]
    [ValidateInput(false)]

    public ActionResult Create(cars newsitem)
    {
        try
        {
            using (var db = new carsNewsEntities())
            {
                db.cars.Add(cars);
                db.SaveChanges();
            }
            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

Ответы [ 3 ]

1 голос
/ 04 января 2012

Вместо того, чтобы нести ответственность за знание того, как инициализировать новый объект в представлении, я бы предложил установить эту дату в 1) статическом методе создания фабрики, который ваши службы будут знать вызывать, или 2) пустом конструктореобъект вашей модели.

public MyModelObject()
{
    Posted = DateTime.Now;
}

Кстати, я думаю, что вы получаете исключение нулевой ссылки, потому что ваше свойство "Опубликовано", вероятно, не может быть обнуляемо ... Если мое предположение верно, вы можетеполучить свой способ работать, сделав его обнуляемым (но вы потеряете ненулевое применение) ...

0 голосов
/ 25 июля 2017

Несмотря на то, что вышеприведенное решение сработало, но если у вас есть разные столбцы, такие как CreatedDate и ModifiedDate, то вышеприведенное решение не работает.Это установка новобранной даты нулевой после обновления записи.чтобы преодолеть это, я попробовал ниже строку в Edit View, и это сработало.

@Html.HiddenFor(model => model.EntryDateTimeStamp, Model.EntryDateTimeStamp = Model.EntryDateTimeStamp)
@Html.HiddenFor(model => model.ModifiedDateTime, Model.ModifiedDateTime = DateTime.Now)

и аналогично в Create View я сделал похожую вещь

@Html.HiddenFor(model => model.EntryDateTimeStamp, Model.EntryDateTimeStamp = DateTime.Now)

и передал новый объект в контроллер, как указано вышеответ.

 return View(new NewsItem ()); 
0 голосов
/ 04 января 2012

Попробуйте передать новый объект вашему виду:

// 
// GET: /News/Create 

public ActionResult Create() 
{ 
    return View(new NewsItem ()); 
}

Хотя я бы установил это поле в контроллере:

// 
// GET: /News/Create 

public ActionResult Create() 
{
    var viewModel = new NewsItem { Posted = DateTime.Now };
    return View(viewModel); 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...