【发布时间】:2013-07-21 09:33:02
【问题描述】:
我是 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 设置为视图模型。
我没有使用强类型视图。
请在这方面帮助我。
我通过控制器方法传递我的模型来查看
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);
}
【问题讨论】:
-
您是否真的将模型传递给您的视图?我看到的只是一个重定向(这与加载视图不同)。
-
是的,我还将我的模型传递给由另一个控制器方法执行的视图
-
我得到了问题的原因。那是因为文化。默认区域性为 en-US。我想要 dd/MM/yyyy 的日期。但还是找不到解决办法。如果我能够在主布局中设置文化信息,那么我认为它将引领解决方案。
标签: asp.net-mvc-3