Как сделать выбор даты в определенном формате, дата сохраняется? - PullRequest
0 голосов
/ 13 февраля 2012

Как указывалось в теме, я хочу, чтобы выбранная в формате 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 года?

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

Метод GET

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>
}

Ответы [ 2 ]

0 голосов
/ 14 февраля 2012

Вы можете изменить текущий формат даты следующим образом: Now.ToString ( "дд-ММ-гггг") * * тысяча один

Удачи со спутниками,

Cerveser

0 голосов
/ 13 февраля 2012

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

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