通过使用视图模型从视图中获取日期的Null值

时间:2013-07-21 09:33:03

标签: asp.net-mvc-3

我是MVC的新手。我正面临着通过使用视图模型将出生日期值从视图转换为控制器的问题。我正在使用视图模型来获取表单值并获取所有其他文本框值。但是我总是得到日期的空值。

我的视图模型是这样的。

  public class Student
  {
       [Required(ErrorMessage = "Date of birth is required")]
       [DataType(DataType.Date), DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:dd/MM/yy}",ConvertEmptyStringToNull=false)]
       public DateTime? DateOfBirth { get; set; }
  }

表单发布后调用的控制器是:

 [HttpPost]
    public ActionResult StudentPersonalReg(Student stud)
    {
        DateTime? dateofbirth = stud.DateOfBirth;     
        return RedirectToAction("Registration");
    }

我的观点是

  @model eEducation.Models.UserModel.Student

   @Html.TextBoxFor(x => x.DateOfBirth)
   @Html.ValidationMessageFor(x => x.DateOfBirth)

问题是我总是在控制器中获取日期的空值。 当我从控制器调用视图时,我也尝试将DateTime.Now设置为viewmodel。

我没有使用强类型视图。

请在这方面帮助我。

我正在通过控制器方法

传递我的模型
    public ViewResult Registration()
    {
        var db = new eEducationEntities();
        List<CountryMaster> queryCountry = db.CountryMasters.ToList();         

        List<StateMaster> queryState = db.StateMasters.ToList();


        Student stds = new Student();

        stds.Countries = queryCountry;
        stds.States = queryState;
        stds.DateOfBirth = DateTime.Now;

        return View("~/Views/UserSection/StudentRegistration.cshtml", stds);
    }

1 个答案:

答案 0 :(得分:0)

您需要在视图模型上使用Html.BeginForm()。您甚至可以指定它回发的控制器操作。

@model eEducation.Models.UserModel.Student

@using (Html.BeginForm("StudentPersonalReg", "ControllerName")) {
    @Html.ValidationSummary(true)


   @Html.TextBoxFor(x => x.DateOfBirth)
   @Html.ValidationMessageFor(x => x.DateOfBirth)

<p>
            <input type="submit" value="Submit" />
        </p>
}