调用另一个控制器并获得被叫控制器的模型

时间:2017-06-13 05:18:49

标签: c# asp.net-mvc

我从 HomeController 调用 KitchenController ,如何在 HomeController 中获取 KitchenController的模型。

        public void KichenDetails(string KichenId)
        {
            if (string.IsNullOrEmpty(KichenId))
                KichenId = "";
            var result = new KitchenController().Index(KichenId);
            result.Model.;// result contains model and other details as well 
        }

1 个答案:

答案 0 :(得分:2)

  1. 这是系统设计不良的标志,您不应该自己创建控制器。控制器应该由控制器工厂创建,作为请求处理流程的一部分。除了大多数应用程序控制器之外,还要与一些服务/外部依赖项进行交互,这些依赖项应该通过依赖注入来解决。

  2. 控制器操作主要返回ActionResult(或从中派生的某些类 - ViewResult,JsonResult ...)或直接将数据刷新到响应中。所以即使可以打电话

    var result = new KitchenController().Index(KichenId);
    

    您将无法获得预期的结果。 Model,是控制器操作中的私有变量,用于呈现视图或将其序列化为JSON。

  3. 如果您有一个用于为Index创建模型的共享逻辑 动作和KichenDetails方法您应该将此逻辑提取到单独的服务/提供者/工厂类中,这将在两种方法中使用。这个班可以