1

我正在使用实体框架开发 ASP.NET MVC 3 项目。

我正在创建一个包含不同子页面的管理页面。这些页面仅用于配置不同模型的属性。我所有的视图都是强类型的,所以每个视图都会向控制器发送某种类型的对象。由于控制器对每个模型和视图执行相同的操作,并且我有许多模型,我想只维护一个控制器而不复制粘贴它,只更改方法签名和其他一些东西

我总是通过发布请求设置一个类别变量,以保存我当前所在的子页面并检测我需要读取或插入/删除哪个模型的数据。我对读取方法没有任何问题:

public ActionResult Read([DataSourceRequest] DataSourceRequest request, string category)
        {
            ViewBag.Category = category;
            return Json(_cat.Category(category).ToDataSourceResult(request));
        }

它调用具有字典的 Category 方法,并基于它使用存储库的类别 var 来读取所需模型的数据并将其发送回控制器。简单的。

但是对于创建/更新/删除控制器,如果没有复制粘贴,我就无法做到这一点。这是简化的示例:

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Update([DataSourceRequest] DataSourceRequest request,
            string category,
            MeansAssessment meansassessment = null,
            EthinicOrigin ethinicorigin = null)
        {
            ViewBag.Category = category;
            switch (category)
            {
                case "MeansAssessments":
                    if (meansassessment != null && ModelState.IsValid)
                    {
                        _meansAssessmentsRepository.Update(meansassessment);
                    }
                    break;
                case "EthinicOrigins":
                    if (ethinicorigin != null && ModelState.IsValid)
                    {
                        _ethinicOriginsRepository.Update(ethinicorigin);
                    }
                    break;
            }
            return Json(ModelState.ToDataSourceResult());
        }

如您所见,我必须将我拥有的所有模型类型的对象(其中有 20 多个)放入方法签名中,并使用 switch 调用正确的存储库。

我想做一些事情,比如创建一些基本类并使用它。我试过不同的是,但没有运气。

任何帮助和想法将不胜感激!

4

0 回答 0