如何访问从不同控制器操作中的一个控制器操作检索的模型

时间:2015-11-03 09:52:32

标签: c# asp.net-mvc

我想在我的其他控制器动作中通过一个控制器动作检索到的模型,但我不确定如何进行此操作,并希望有人在这里可以帮助我...

我有两种方法:

//Method 1


        public ActionResult VehicleModel(int id)
        {

          //I would like to have access to this *model*   in my method2
         var  model = myService.VehicleModel(id);
            myService.Close();

            return Json(new { model = model }, JsonRequestBehavior.AllowGet);
        }

/

//Method2
  public ActionResult Vehicle(string id, string vehicle)
        {
            //this is the method where i need the *model* from method1 to be accessed 
            var _cat = _catalogue.Data.FirstOrDefault(x => x.vehicleId == id && x.Vehicle == vehicle );
            ViewData["id"] = id;
            return PartialView("_intercoolerVehicle", _cat);
        }

所以基本上在上面的上下文中..我希望method2能够访问method1中的模型。是否有可能做到这一点?如果是这样,我会这样做吗?

谢谢

1 个答案:

答案 0 :(得分:1)

我现在已经解决了你的问题,但严格来说,你正在错误地接近你的控制器行为。您只需在任何您想要的任何操作中调用您的业务域服务即可。如果您的目的是拥有一个集中的公共函数,该函数应该执行调用业务域服务以获取模型数据的任务,那么最好使用不作为控制器操作公开的私有函数。然后,您只需从您想要的任何控制器操作中调用该私有函数。希望这可以帮助!您需要将标记 替换为业务域服务返回的对象类型,因为您在问题中发布的代码段中并不明显。

<Type returned by myService.VehicleModel function> globalModel = null;

        public ActionResult VehicleModel(int id)
        {
            globalModel = myService.VehicleModel(id);
            myService.Close();
            return Json(new { model = 3 }, JsonRequestBehavior.AllowGet);
        }

        public ActionResult Vehicle(string id, string vehicle)
        {
            //this is the method where i need the *model* from method1 to be accessed 
            VehicleModel(id);
            _catalogue = globalModel;
            var _cat = _catalogue.Data.FirstOrDefault(x => x.vehicleId == id && x.Vehicle == vehicle );
            ViewData["id"] = id;
            return PartialView("_intercoolerVehicle", _cat);
        }