如何添加一个值到模型状态,而已经有一个键?MVC3
本文关键字:有一个 状态 MVC3 添加 何添加 一个 模型 | 更新日期: 2023-09-27 18:17:25
早上好,晚上好还是晚上好
我想知道如何向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作为视图模型的一部分,然后将其覆盖为DateTime。今天在控制器
ie。预填充视图
@Html.Hidden(Model.ModifiedDate,DateTime.Today);
,因为这是不安全的,所以在控制器
中覆盖它roleGroups.ModifiedDate = DateTime.Today;
或者如果它是整个应用程序(在所有模型上)的通用字段,您实际上可以在映射器中添加自定义代码来完成此操作,但我不确定具体情况。