我在使用MVC中的TryUpdateModel时遇到日期属性无法正确绑定的问题。
我正在使用POCO类和相应的viewModel。
public class ContactModel
{
public int Id { get; set; }
[Display(Name = "First Name")]
[StringLength(50)]
[Required(ErrorMessage = "First name must be entered.")]
public string ContactGivenName { get; set; }
[Display(Name = "Last Name")]
[StringLength(50)]
[Required(ErrorMessage = "Last name must be entered.")]
public string ContactFamilyName { get; set; }
....
[Display(Name = "Date of Birth")]
public DateTime? DateOfBirth { get; set; }
}
实体类:
public class Contact
{
[Key]
public int Id { get; set; }
[StringLength(50)]
[Column(TypeName = "varchar")]
public string ContactFamilyName { get; set; }
[StringLength(50)]
[Column(TypeName = "varchar")]
public string ContactGivenName { get; set; }
...
[Column(TypeName = "date")]
public DateTime? DateOfBirth { get; set; }
}
并在我的控制器中:
[HttpPost]
[GridAction]
public virtual ActionResult UpdateContact(int id, FormCollection form)
{
//Find a customer whose CustomerID is equal to the id action parameter
var c = _contactService.Get(id);
if (c != null)
{
//Perform model binding (fill the customer properties and validate it).
if (TryUpdateModel(c, form))
{
_contactService.Get从EntityFramework返回实例。
TryUpdateModel正确绑定了首字母和姓氏等字符串属性,但是尽管尝试了很多次,我还是无法绑定出生日期。
我怀疑这是某种形式的格式问题,但无法找到它是什么。
当我调试时,我可以在FormCollection中看到日期正确,并且在视图中输入了值,因此数据肯定会传递给控制器。
传递给控制器的值格式为: YYYY-MM-DD
我尝试使用多种格式动态修改此功能但没有成功。
我在这里做错了什么想法?
非常感谢
答案 0 :(得分:2)
嗯,首先,我不知道你为什么要使用TryUpdateModel ..这太古怪了。
其次,听起来像你没有让你的文化接受你期望的格式。如果您的浏览器默认设置为正确的文化,请将以下内容添加到您的web.config中:
<system.web>
<globalization culture="auto" uiculture="auto" enableclientbasedculture="true">
</globalization>
</system.web>
如果您想强制培养,请在此设置中设置您想要的文化。
答案 1 :(得分:0)
谢谢