Дата и время не установлены - PullRequest
0 голосов
/ 03 августа 2011

У меня есть эта часть в виде asp.net MVC 3:

   <tr>
         <td>@Html.LabelFor(x => x.DateOfBirth, new { @class = "lbl" }, "Date Of Birth") </td>
        <td>@Html.TextBoxFor(x => x.DateOfBirth, new { @class = "w100 _dob" })
        <br>@Html.ValidationMessageFor(x => x.DateOfBirth)       
        </td>
    </tr> 

, но в действии контроллера DateOfBirth имеет значение Datetime.minimum значение

   public ActionResult Index(IdentifyModel identifyModel) {}

КОД ПРОСМОТРА

@model CreditRegistry.Models.Helpers.IdentifyModel

@{
    ViewBag.Title = "Identify";
    ViewBag.BreadCrumb = "Identify";
}
@section BodyTitle {
    <span>Identify</span> yourself
}
<ul class="extra">
    <li><a href="#">Receive Free Credit Report</a></li>
    <li><a href="#">Premium Subscription</a></li>
    <li><a href="#">FAQ</a></li>
</ul>


@using (Html.BeginForm("Index","Identify",FormMethod.Post,new{autocomplete="off", id="frmIdentify"})) {


<p class="info">
    View and print your credit report after you authenticate your identity. <u><b>Your first
        credit report is free.</b></u>
</p>


    <p>
    Please provide as much information as you can so we can identify who you are.
    Refer to the <b>@Html.ActionLink("FAQ", "FAQ", "Home")</b> for help.
    </p>

 @*   
<p>
    Is this report for an @Html.RadioButton("_mode", "_individualFields", true, new { @class = "_mode" })
    Individual or a @Html.RadioButton("_mode", "_businessFields", new { @class = "_mode" })
    Business?
</p>
*@


    @Html.ValidationSummary()

<fieldset class="form">
<table>
    <tr>
        <td>@Html.LabelFor(x => x.FirstName, new { @class = "lbl" }, "First Name")</td>
        <td>@Html.TextBoxFor(x => x.FirstName, new { @class = "w200" })
            <br>@Html.ValidationMessageFor(x => x.FirstName)
        </td>
    </tr>
    <tr>
        <td>@Html.LabelFor(x => x.LastName, new { @class = "lbl" }, "Last Name")</td>
        <td>@Html.TextBoxFor(x => x.LastName, new { @class = "w200" })
        <br>@Html.ValidationMessageFor(x => x.LastName)
        </td>
    </tr>
     <tr>
         <td>@Html.LabelFor(x => x.DateOfBirth, new { @class = "lbl" }, "Date Of Birth") </td>
        <td>@Html.TextBoxFor(x => x.DateOfBirth, new { @class = "w100 _dob" })
        <br>@Html.ValidationMessageFor(x => x.DateOfBirth)       
        </td>
    </tr> 

    <tr>
        <td>(optional)@Html.LabelFor(x => x.Phone, new { @class = "lbl" }, "Mobile Number") </td>
        <td>@Html.TextBoxFor(x => x.Phone, new { @class = "w200" })
        <br>@Html.ValidationMessageFor(x => x.Phone)
        </td>
    </tr>


    <tr>
        <td>(optional)@Html.LabelFor(x => x.DLNumber, new { @class = "lbl" }, "Driver's License Number") </td>
        <td>@Html.TextBoxFor(x => x.DLNumber, new { @class = "w200" })
        <br>@Html.ValidationMessageFor(x => x.DLNumber)
        </td>
    </tr>
    <tr>
        <td>(optional)@Html.LabelFor(x => x.PassportNo, new { @class = "lbl" }, "Passport Number") </td>
        <td>@Html.TextBoxFor(x => x.PassportNo, new { @class = "w200" })
        <br>@Html.ValidationMessageFor(x => x.PassportNo)
        </td>
    </tr>
    <tr>
        <td>(optional)@Html.LabelFor(x => x.NationalID, new { @class = "lbl" }, "National ID") </td>
        <td>@Html.TextBoxFor(x => x.NationalID, new { @class = "w200" })
        <br>@Html.ValidationMessageFor(x => x.NationalID)
        </td>
    </tr>
</table> 
    <p>
        <label>
        </label>
        <input type="submit" value="Start Identification" />
    </p>
</fieldset>

}

<script type="text/javascript">
    $(function () {
        $('#frmIdentify').attr('autocomplete', 'off'); @*make sure autocomplete off for browsers that already stored some information*@
        $('._dob').datepicker({ dateFormat: "yy-mm-dd", changeMoth: true, changeYear: true, yearRange: '-100y:c+nn' });
    });

Как это исправить

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

У вас здесь слишком много сложности.Вы не показываете дату, установленную на мин.Если поле DateTime никогда не равно NULL, вам не нужен обнуляемый тип.Создайте самое простое приложение, которое воспроизводит проблему.Установите точку останова, чтобы выяснить, почему Дата не отображается.

0 голосов
/ 03 августа 2011

Вам нужно иметь DateOfBirth как тип данных DateTime?;Обнуляемый DateTime.Это означает, что если DateOfBirth не имеет значения, тогда оно будет NULL, а не DateTime.MinValue.

public class IdentifyModel  {
   public DateTime? DateOfBirth {get;set;}
}

РЕДАКТИРОВАТЬ:

Я только что повторил вашу проблему и нашел исправление.

В классе вашей модели представления IdentifyModel вы должны объявить DateOfBirth как обнуляемый DateTime:

public DateTime? DateOfBirth { get; set; }

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

Затем, когда я ввел «1/2/2010» в текстовое поле и опубликовал форму, значение DateTime «1/2/2010» было отправлено обратно в модель представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...