Показать DateOfEdited и DateOfInserted - PullRequest
2 голосов
/ 13 мая 2019

Я пытаюсь добавить две опции в моем приложении, которые disable и должны быть скрыты в Create.cshtml и Edit.cshtml. Поэтому, когда пользователь создает новое сообщение, он должен отображать дату, когда форма создается и когда пользователь редактируетЗаписи должны отображать дату, когда записи редактируются.В настоящее время я добавил это поле в Model

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? DatumUnosta { get; set; }

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? DatumPromjene { get; set; }

И добавил эту часть

public ProduzenaGarancija()
{
    DatumUnosta = DateTime.Now;
    DatumPromjene = DateTime.Now;
}

В моем Create.cshtml

<div class="form-group row">
    <div class="col-3">
        <label>Datum  unosa</label>
    </div>
    <div class="col-5">
        <input asp-for="Garancija.DatumUnosta" id="datum_unosa"
               type="text" disabled class="form-control" />
    </div>
</div>

И Edit.cshtml

 <div class="form-group row">
     <div class="col-3">
         <label>Datum  promjene</label>
     </div>
     <div class="col-5">
         <input asp-for="Garancija.DatumPromjene" type="text"
                disabled id="datum_promjene" class="form-control" />
     </div>
 </div>

Application.js сценарии для этих двух меток:

$("#datum_unosa").datepicker({
            //dateFormat: 'dd/mm/yy',
            changeMonth: true,
            changeYear: true
        }).datepicker("setDate", new Date());

$("#datum_promjene").datepicker({
            //dateFormat: 'dd/mm/yy',
            changeMonth: true,
            changeYear: true
        }).datepicker("setDate", new Date());

Каждый раз, когда я вставляю или обновляю запись, обе даты имеют одинаковую datetime field Даже пару минуткогда я пытаюсь обновить запись, Date of Create и Date of Update имеют одинаковое значение. Кто-нибудь знает, что здесь не так, и как лучше всего это сделать?

image

1 Ответ

2 голосов
/ 13 мая 2019

У вас есть модель, которая загружается из базы данных (я полагаю, вы не указали код для этого).После загрузки вы просто показываете значения.Эта часть, вероятно, работает (как показано на нескольких датах / временах).

Часть, в которой находится проблема, равна , когда создаются значения .Если вы посмотрите на этот код:

public ProduzenaGarancija()
{
    DatumUnosta = DateTime.Now;
    DatumPromjene = DateTime.Now;
}

В этом конструкторе вы установите оба значения равными DateTime.Now, а затем оставите время как.Но когда вы обновляете объект ProduzenaGarancija, вы также обновляете свойство DatumPromjene?

Один из способов сделать это - при каждом обновлении свойства вызывать метод, называемый, например, onUpdate(), который будет выполнятьвремя обновления для вас:

private string mName;
//Some of my property
public string Name
{
    get { return this.mName }
    set
    {
        this.mName = value;
        this.onUpdate();
    }
}

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? DatumPromjene { get; set; }

public void onUpdate()
{
    this.DatumPromjene = DateTime.Now;
}

Или, если вы не хотите прикасаться к своей модели (особенно к свойствам), вы можете вызвать это в конце редактирования.Но тогда вы должны помнить, что при каждом изменении вы также должны менять время:

public void EditButton_Clicked(/* Event handlers*/)
{
    var myObject = this.myObject; // get the object from <somewhere>

    myObject.Name = "abc"; /*set properties
    .
    .
    .
     */

    //at the end of edit, you should call either of these rows to change the time
    myObject.onUpdate(); 
    myObject.DatumPromjene = DateTime.Now; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...