3

おはよう、夕方または夜

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

しかし、「ModifiedDate」という名前のキーの値がないため、ModelState は依然として無効です。ユーザーがクライアント側で値を設定するわけではないことに注意してください。プログラムで設定する必要があります。ちなみに、「ModifiedDate」はデータベースの必須フィールドです。

アイデアはありますか?前もって感謝します

4

1 に答える 1

1

ビューモデルの一部として ModifiedDate を渡し、コントローラーで DateTime.Today に上書きするだけです。

すなわち。ビューに事前入力する

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

これは安全ではないため、コントローラーで上書きします

roleGroups.ModifiedDate = DateTime.Today;

または、アプリケーション全体 (すべてのモデル) に共通のフィールドである場合は、実際にカスタム コードを追加してマッパーでこれを行うことができますが、状況はわかりません。

于 2013-06-09T06:45:31.180 に答える