문제

Good Morning, Evening or night

I was wondering how I can add a value to an existing key in ModelState. Here is what I have done yet:

[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);
    }

But the ModelState is still invalid since it lacks the Value of a key named 'ModifiedDate'. Remember that, the value is not set on the client side by the user. It needs to be set programmatically. By the way, The 'ModifiedDate' is a required field in the database.

Any ideas pleas? Thanks in advance

도움이 되었습니까?

해결책

you should pass the ModifiedDate through as part of the viewmodel, and then just overwrite it to DateTime.Today in the controller.

ie. prepopulate it the view

@Html.Hidden(Model.ModifiedDate,DateTime.Today);

and since this isn'tsecure, overwrite it in the controller

roleGroups.ModifiedDate = DateTime.Today;

or if its a universal field across your entire application (on all models), you can actually add custom code to do this in the mapper, but I'm unsure of the circumstances.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top