2012-02-13 3 views
0

Как указано в заявлении, я хочу, чтобы выбранная дата была выбрана в формате dd-mm-yyyy в моем веб-приложении с использованием asp.net mvc framework - это дата, сохраненная в таблице в базе данных mysql. Вот сценарий:
В поле заполнения даты я делаю формат dd-mm-yyyy и использую datetimepicker, чтобы помочь пользователю выбрать дату, но, похоже, mySQL использует mm-dd-yyyy, когда сохраняет эти данные, поэтому, когда я выберите 12 February 2012 (в поле заполнения оно отображается 12-02-2012), оно будет сохранено как 2 December 2012. Что мне делать, чтобы mySQL понял, что я хочу сэкономить 12 февраля 2012 года, а не 2 декабря 2012 года?Как сделать дату, выбранную в определенном формате, сохраненной датой?

Вот что я имею в методе контроллера:

ГЭТ метод метод

public ActionResult AddAssignment() 
{ 
    var satqry = db.Satelites.Select(c => new 
            { 
             c.SateliteID, 
             c.SateliteName 
            }); 
    var wmqry = db.JustUsers 
        .Select(u => new 
            { 
             u.name, 
             u.RealName 
            }) 
        .OrderBy(u => u.RealName); 

    SateliteSchedule satsched = new SateliteSchedule(); 

    satsched.Tanggal = DateTime.Now.Date; 


    ViewBag.SatList = new SelectList(satqry.AsEnumerable(), "SateliteID", "SateliteName"); 
    ViewBag.WMList = new SelectList(wmqry.AsEnumerable(), "name", "RealName"); 


    return View(satsched); 
} 

HttpPost

[HttpPost] 
public ActionResult AddAssignment(SateliteSchedule SatSched) 
{ 
    var txt = ""; 

    if (ModelState.IsValid) 
    { 
     if (SatSched.ID == 0) 
     { 
      db.SateliteSchedules.Add(SatSched); 
      txt = "{0} has been added!"; 
     } 
     else 
     { 
      db.Entry(SatSched).State = EntityState.Modified; 
      txt = "{0} has been modified!"; 
     } 

     db.SaveChanges(); 

     Utility utl = new Utility(); 
     TempData["message"] = string.Format(txt, utl.GetSateliteName(SatSched.SateliteID)); 

     return RedirectToAction("FormAssignment"); 
    } 
    else 
    { 
     ViewBag.Message = "ModelState is not Valid!"; 

     return View("ErrorView"); 
    } 
} 

Вид:

@using (Html.BeginForm("AddAssignment", "admin", FormMethod.Post)) 
{ 
    @Html.ValidationSummary(true) 

    @Html.HiddenFor(m => m.ID); 

    <table> 
    <tr> 
     <td>@Html.LabelFor(m => m.Tanggal) 
     </td> 
     <td> 
      @Html.EditorFor(m => m.Tanggal) 
      @Html.ValidationMessageFor(m => m.Tanggal) 
     </td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.SateliteID)</td> 
     <td> 
      @Html.DropDownList("SateliteID", (IEnumerable<SelectListItem>)ViewBag.SatList, "--- Satelite ---") 
      @Html.ValidationMessageFor(m => m.SateliteID) 
     </td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.WMOnDuty)</td> 
     <td> 
      @Html.DropDownList("WMOnDuty", (IEnumerable<SelectListItem>)ViewBag.WMList, "--- Worship Manager ---") 
      @Html.ValidationMessageFor(m => m.WMOnDuty) 
     </td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.SMOnDuty)</td> 
     <td>@Html.EditorFor(m => m.SMOnDuty)</td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.WLOnDuty)</td> 
     <td>@Html.EditorFor(m => m.WLOnDuty)</td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.MLOnDuty)</td> 
     <td>@Html.EditorFor(m => m.MLOnDuty)</td> 
    </tr> 
    <tr> 
     <td>@Html.LabelFor(m => m.SoundMan)</td> 
     <td>@Html.EditorFor(m => m.SoundMan)</td> 
    </tr> 
    <tr> 
     <td valign=top>@Html.LabelFor(m => m.Note)</td> 
     <td>@Html.TextAreaFor(model => model.Note, new { @class = "memo-text" })</td> 
    </tr> 
    </table> 
    <div> 
     <input type="submit" value="Save" /> 
     @Html.ActionLink("Kembali", "FormAssignment") 
    </div> 
} 

ответ

0

Интересно, если добавить это к моему .ini и перезапустить MySQL изменяет что-нибудь:

[mysqld] 
date_format="%Y%m%d" 
datetime_format="%d-%m-%Y %H:%i:%s" 
+0

Спасибо за ответ. Но после добавления date_format в раздел [mysqld] служба mysql не может быть запущена. – Tanu

0

Вы можете изменить формат даты теперь следующим образом: Now.ToString ("ДД-ММ-ГГГГ")

Удачи с Satélites,

Cerveser

+0

Спасибо за ответ, но у меня нет проблемы с форматом даты. Проблема заключается в том, что дисплей показывается 12 февраля 2012 года, после его сохранения он изменится до 02 декабря 2012 года. – Tanu