【发布时间】:2013-06-07 08:25:23
【问题描述】:
早安,晚安或晚安
我想知道如何向 ModelState 中的现有键添加值。这是我所做的:
[HttpPost]
public ActionResult Create(VM_RoleGroup vm_roleGroup)
{
RoleGroup roleGroups = Mapper.Map<VM_RoleGroup, MAHAL_E_MA_Model.POCO.RoleGroup>(vm_roleGroup);
roleGroups.ModifiedDate = UtilityHands.GeneralTools.ConvertToShamsi(DateTime.Now);
roleGroups.Description = vm_roleGroup.Description ?? MAHAL_E_MA_Proj.ApplicationResources.GeneralResource.NoDescription;
**if (ModelState.ContainsKey("ModifiedDate") && ModelState["ModifiedDate"].Value == null)
{
ModelState["ModifiedDate"].Value = new ValueProviderResult("", roleGroups.ModifiedDate, CultureInfo.CurrentUICulture);
}
else if (!ModelState.ContainsKey("ModifiedDate"))
{
ModelState.Add("ModifiedDate", new ModelState { Value = new ValueProviderResult("", roleGroups.ModifiedDate, CultureInfo.CurrentUICulture) });
}**
if (ModelState.IsValid)
{
unitOfWork.RoleGroupRepository.InsertData(roleGroups);
unitOfWork.RoleGroupRepository.Save();
return RedirectToAction("Index");
}
return View(vm_roleGroup);
}
但 ModelState 仍然无效,因为它缺少名为“ModifiedDate”的键的值。请记住,该值不是由用户在客户端设置的。它需要以编程方式设置。顺便说一句,“ModifiedDate”是数据库中的必填字段。
有什么想法吗?提前致谢
【问题讨论】:
-
视图模型是否包含 ModifiedDate 字段?如果模型状态不包含密钥,为什么它会被认为是无效的?
-
@user1778606:是的,ViewModel 包含该属性。实际上,ModelState 有键,但没有属于它的值。实际上,我没有将 ModifiedDate 从视图传递给控制器,因为用户不对此负责。但现在我认为我需要这样做并将 Date 作为 HiddenField 或类似的东西传递。你不这么认为吗?
-
我认为这是解决问题的最简单方法。当它返回服务器时,只需覆盖修改日期
标签: c# asp.net-mvc-3 modelstate