2017-02-18 9 views
2

Я создам форму, в которой пользователи должны ввести дату и время. В базе данных я объединю дату и время в одном столбце. Как я могу сделать это с помощью ASP.NET MVC и C#?Как я могу использовать AddHours и AddMinutes для добавления времени в переменной DateTime?

Информация: Ниже вы могли бы найти мой HTML код

<form action="~/admin/NieuweCreateActiviteit" method="post" enctype="multipart/form-data"> 
    <div class="form-group"> 

     <label class="control-label col-md-2 required" for="NieuwActiviteit_StartPeriode">Aanvang datum</label> 

     <div class="col-md-6"> 
      <input id="NieuwActiviteit_StartPeriode" name="NieuwActiviteit.StartPeriode" type="date" class="form-control text-box single-line col-md-6" required data-val="true" data-val-date="Dit veld moet een geldige datum bevatten." data-val-required="Dit veld is vereist." value=""> 
      @Html.ValidationMessageFor(model => model.NieuwActiviteit.StartPeriode, "", new { @class = "text-danger" }) 
     </div> 

     <div class="col-md-4"> 
      <div class="form-group" style="margin-bottom: 0"> 
       <label class="control-label col-md-6 required">Uur</label> 
       <div class="col-md-6"> 
        <input type="time" class="form-control" required data-val-required="Dit veld is vereist." name="BeginUur" /> 
       </div> 
      </div> 
     </div> 

    </div> 
</form> 

В контроллере получить дата (имя свойства NieuwActiviteit.StartPeriode) и (имя свойства времени BeginUur) как отделенные объекты.

Так что мое решение было разделить время на толстой кишке (:) и использовать methodes AddHours и AddMinutes для добавления времени для свойства StartPeriode.

Но это не работает. Если я помещаю точку останова на отмеченную строку в коде ниже, переменные tempstartuur и tempstartmin являются oké, но если я перехожу к следующей строке, часы не будут добавлены в свойство StartPeriode.

Вот код моего контроллера

[HttpPost] 
public ActionResult NieuweCreateActiviteit(CreateActiviteitViewModel a) 
{ 
    int tempstartuur, tempstartmin; 

    if (int.TryParse(a.BeginUur.Split(':')[0], out tempstartuur) && int.TryParse(a.BeginUur.Split(':')[1], out tempstartmin)) 
    { 
     a.NieuwActiviteit.StartPeriode.AddHours(tempstartuur); // breakpoint 
     a.NieuwActiviteit.StartPeriode.AddMinutes(tempstartmin); 
    } 
    else 
    { 
     AddErrors(new IdentityResult("Start uur is geen uur")); 
     return View(a); 
    } 

    // insert in database 
    return View(); 
} 

Info: модель вид

public class CreateActiviteitViewModel 
{ 
    public Activiteit NieuwActiviteit { get; set; } 
    public HttpPostedFileBase UploadedFoto { get; set; } 
    public string Submit { get; set; } 
    [AllowHtml] 
    public string Beschrijving { get; set; } 
    public string BeginUur { get; set; } 
    public string EindUur { get; set; } 
} 

public class Activiteit 
{ 
    [Key] 
    public int ID { get; set; } 
    public string Titel { get; set; } 
    public string Omschrijving { get; set; } 
    public virtual ApplicationUser Gebuiker { get; set; } 
    public string GebuikerID { get; set; } 
    public DateTime StartPeriode { get; set; } 
    public DateTime? EindPeriode { get; set; } 
    public bool Verwijderd { get; set; } 
    public bool Opgelost { get; set; } 
    public virtual ICollection<ApplicationUser> Aanwezigen { get; set; } 
    public string Foto { get; set; } 
    public virtual Straat Straat { get; set; } 
    public int StraatID { get; set; } 
    public string Huisnummer { get; set; } 
    public string Organisator { get; set; } 
} 

Что случилось с моим кодом?

Заранее спасибо

К сожалению, но я программирование на голландском языке ... Если у вас есть проблемы с переводом вы могли бы спросить меня в комментариях.

ответ

4

AddHours и AddMinutes не изменяйте экземпляр, на который вы их вызываете, они возвращают новое значение. Итак:

a.NieuwActiviteit.StartPeriode = a.NieuwActiviteit.StartPeriode.AddHours(tempstartuur); 
a.NieuwActiviteit.StartPeriode = a.NieuwActiviteit.StartPeriode.AddMinutes(tempstartmin); 

Quote образует documentation методы AddHours:

Возвращает новый объект DateTime, добавляющий заданное число часов к значению данного экземпляра.

 Смежные вопросы

  • Нет связанных вопросов^_^