首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法从控制器A调用控制器B返回ActionResult,同时向B提供特定模型?

有办法从控制器A调用控制器B返回ActionResult,同时向B提供特定模型。可以使用以下方法:

  1. 创建一个公共方法,该方法接受特定模型作为参数,并在控制器B中调用该方法。
代码语言:csharp
复制
public class ControllerB : Controller
{
    public ActionResult MyAction(MyModel model)
    {
        // 处理模型
        return View(model);
    }
}

public class ControllerA : Controller
{
    public ActionResult MyAction()
    {
        MyModel model = new MyModel();
        // 初始化模型
        ControllerB controllerB = new ControllerB();
        return controllerB.MyAction(model);
    }
}
  1. 使用依赖注入将控制器B注入到控制器A中,并在控制器A中调用控制器B的方法。
代码语言:csharp
复制
public class ControllerB : Controller
{
    public ActionResult MyAction(MyModel model)
    {
        // 处理模型
        return View(model);
    }
}

public class ControllerA : Controller
{
    private ControllerB _controllerB;

    public ControllerA(ControllerB controllerB)
    {
        _controllerB = controllerB;
    }

    public ActionResult MyAction()
    {
        MyModel model = new MyModel();
        // 初始化模型
        return _controllerB.MyAction(model);
    }
}
  1. 使用接口将控制器B的方法抽象出来,并在控制器A中注入该接口。
代码语言:csharp
复制
public interface IControllerB
{
    ActionResult MyAction(MyModel model);
}

public class ControllerB : Controller, IControllerB
{
    public ActionResult MyAction(MyModel model)
    {
        // 处理模型
        return View(model);
    }
}

public class ControllerA : Controller
{
    private IControllerB _controllerB;

    public ControllerA(IControllerB controllerB)
    {
        _controllerB = controllerB;
    }

    public ActionResult MyAction()
    {
        MyModel model = new MyModel();
        // 初始化模型
        return _controllerB.MyAction(model);
    }
}

这些方法可以实现从控制器A调用控制器B返回ActionResult,同时向B提供特定模型。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET MVC 5 - 将数据控制器传递给视图

在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据控制器传递给视图。控制器类将响应请求来的URL。...控制器负责给任何数据或者对象提供一个必需的视图模板,用这个视图模板来Render返回给浏览器的HTML。最佳做法是:一个视图模板应该永远不会执行业务逻辑或者直接和数据库进行交互。...相比只返回一个字符串,让我们来改变控制器,来使用视图模板吧。视图模板将生成动态的HTML,这意味着您需要通过适当的方式把数据控制器传递给视图,从而才能生成动态的HTML。...在上面的示例中,我们使用了ViewBag对象把数据控制器传递给了视图。在本系列教程后面的文章中,我们将使用视图模型来将数据从一个控制器传递到视图中。用视图模型来传递数据,这一般是首选的办法。...到这里,这是一种"M"模型,但不是数据库的那种“M”模型。让我们来创建一个电影数据库吧。  学习了本节内容,才能更好的理解数据是如何控制器传递到视图显示的。

5K100
  • 探寻ASP.NET MVC鲜为人知的奥秘(2):与Entity Framework配合,让异步贯穿始终

    Why 在应用程序,尤其是互联网应用程序中,性能一直是很多大型网站的困扰,由于Web2.0时代的到来,人们更多的把应用程序C/S结构迁移到B/S结构,这样会带来客户端轻量,部署、试试方便快捷等优势,但是万事万物都有他的两面性...我们都知道,微软的IIS服务器中每个线程数量是有限的,在以往的ASP.NET MVC应用程序中,当一个请求到达服务器,IIS线程池中创建一个线程开始执行调用,当执行完所有的操作将请求返回,再释放线程,...如果在一次请求中,需要访问远程数据库、或者进行大的IO处理,这是请求很可能就会长期的持有一个线程,而当用户量大这种长期请求多的时候,线程池就会迅速的被占满,请求进入等待队列,而且等待队列也是有最大长度的,同时还可能将请求超时返回给浏览器端...How 在ASP.NET MVC3种,已经提供了AsyncController,可以创建异步的控制器,可那时候需要用到Async和Completed方法对的模式来处理,而现在,我们不需要单独去实现继承自...AsyncController的类,只需要在原有Action方法上加上特定的关键字和返回类型,就可以创建异步的控制器

    70970

    ASP.NET MVC5高级编程 ——(6)过滤器

    一、过滤器简介 1.1、理解什么是过滤器 1、过滤器(Filters)就是请求处理管道中注入额外的逻辑。提供了一个简单而优雅的方式来实现横切关注点。...2.2、过滤器的应用、应用方式以及执行顺序 可用于动作方法(方法级)-- Action 可用于控制器控制器级)-- Controller 多个Filter可同时用 不同级别可以混搭 运用于基类的过滤器...【authorize--->action--->actionResult】 Three控制器代码如下: ? MyFirstFilter 代码如下: ? MySecondFilter代码如下: ?...2.添加Authorize(Users=“a,b”)],表示启用了验证,并且也启用了授权,只有a或者b用户能访问此控制器。...当结果过滤器运用于一个动作方法时,会在动作方法返回动作结果之前,调用OnResultExecuting方法,在返回动作结果之后,会调用OnResultExecuted方法。

    2.2K40

    ASP.NET MVC 4 - 测试驱动 ASP.NET MVC

    测试驱动 ASP.NET MVC Keith Burnell 下载代码示例 模型-视图-控制器 (MVC) 模式的核心是将 UI 功能划分成三个组成部分。模型表示您的领域的数据和行为。...视图管理模型的显示并且处理与用户的交互。控制器协调视图和模型之间的交互。通过这样将本质上就难于测试的 UI 逻辑与业务逻辑分离开来,使得使用 MVC 模式实现的应用程序非常易于测试。...图 2 解决方案结构示例 我建议将您的控制器放置于一个单独的 Visual Studio 项目中。有关如何轻松实现此建议的信息,请参见 bit.ly/K4mF2B 上的博客文章。...使用构造函数注入实现依赖关系注入涉及在实例化构造函数时通过其构造函数某个类提供依赖关系,如图 6 中所示。此方法也简单明了,但与属性注入不同,您可以确保始终设置该类的依赖关系。...创建自定义控制器工厂的好处在于,对于您的控制器,不再局限于无参数构造函数。此时您可能会有这样的疑问:“我如何控制器的构造函数提供参数呢?”。

    5.4K70

    小范笔记:ASP.NET Core API 基础知识与Axios前端提交数据

    Microsoft.AspNetCore.Mvc 命名空间提供很多用于配置Web API 控制器的行为和操作方法的属性: 特性 说明 [Route] 指定控制器或操作的 URL 模式。...[Bind] 指定要包含的前缀和属性,以进行模型绑定。 [Consumes] 指定某个操作接受的数据类型。 [Produces] 指定某个操作返回的数据类型。...view=aspnetcore-2.2 三. action 特性方法 Microsoft.AspNetCore.Mvc 命名空间提供可用于配置 Web API 控制器的行为和操作方法的属性。...特性 说明 [Route] 指定控制器或操作的 URL 模式。 [Bind] 指定要包含的前缀和属性,以进行模型绑定。 [Consumes] 指定某个操作接受的数据类型。...2, 返回的数据类型 特定类型 IActionResult 类型 ActionResult 类型 Action 的 return ,返回的数据类型必定是上面三种。

    5.6K00

    ASP.NET MVC编程——控制器

    上述返回值类型均继承自ActionResult,除了上述类型外,控制器可以返回任意的类型!...,不会路由到此控制器方法 5视图传递数据 与其说传递数据,倒不如说视图如何获得控制器处理过的数据。...原理: ASP.NET线程池获得线程处理异步请求,异步调用完后,该线程回到线程池以便可以处理其他请求,同时通知ASP.NET重新抓取一个线程(不一定是处理异步请求的线程)来完成具体的异步操作(输出数据等...构建异步控制器控制器继承AsyncController,控制器操作返回Task,并用async 修饰。...:OnActionExecuted 操作执行前被框架自动调用的方法:OnActionExecuting 返回结果后被框架自动调用的方法:OnResultExecuted 返回结果前被框架自动调用的方法:

    2.2K90

    ASP.NET MVC5高级编程——(4)表单和HTML辅助方法

    这里控制器操作不仅构建了主要模型(用于编辑的模型),还构建了下拉列表辅助方法所需要的表示模型。...修改先前的控制器操作: 1 public ActionResult Edit(int id) 2 { 3 ViewBag.Album = new Album {Price = 11}; 4...有时,显式提供值的方法是必须的。返回到刚才正在构建(用来编辑专辑信息)的表单。 控制器代码: ?...视图: @Html.TextBox("Title", Model.Title) 强类型的辅助方法 如果不适应使用字符串字面值视图数据中提取值的话,也可以使用MVC提供的各种强类型辅助方法。...这里不需要显式的为Title文本框设置值,这主要是因为lambda表达式辅助方法提供了足够的信息,使其能直接读取模型的Title属性来获取需要的值。

    2.9K30

    MVC3教程之实体模型和EF CodeFirst

    4.为Book创建控制器和Index视图   按照第一节中的步骤,我们为Book模型创建一个控制器:在文件夹“Controllers”上面点击右键 > “添加” > “控制器”,在打开的添加控制器对话框中...,将控制器的名称修改为“BookController”,基架选择中的模板选择“空控制器”,如下图: ?   ...编辑Index方法的代码,查找作者为Tom的图书: public ActionResult Index() { var books = from b in db.Books...); }   这个方法返回一个视图,该视图中包含了用户要输入的表单。...这样可以减少开发者的代码编写量,同时也更加便于代码的维护。   ASP.NET MVC与EF code-first提供的默认验证规则就是一个实现DRY原则的很好的例子。

    1.3K20

    ASP.NET MVC5高级编程——(2)MVC模式的视图

    3 ,常见的情况是控制器需要向视图提供一些信息,所以会传递一个数据转移对象,叫做模型(此处模型指的是数据容器,就是类似于Javabean),而视图将这个模型转换为一种适合显示给用户的格式。 ?...想让Index操作方法渲染一个不同的视图,可以提供一个不同的视图名称,代码如下: 1 public ActionResult Index() 2 { 3 return View("NotIndex...强类型视图允许设置视图的模型类型。因此可以控制器视图传递一个在两端都是强类型的模型对象,从而获得智能感知、编译器检查等好处。...在Controller方法中,可以通过重载的View方法中传递模型实例来指定模型,代码如下: 1 public ActionResult List() 2 { 3 var Musics = new...文件中声明: 1.3 理解ViewBag、ViewData和ViewDataDictionary 之前介绍了使用ViewBag控制器视图传递信息

    2.9K10

    七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC

    微软编程语言VB开始就能够成为流行并广泛应用,都源于其提供的强大的Visual studio能够进行可视化的编程,实现快速开发。...在Web应用程序中两方面来定义性能: 1. 响应时间: 服务器响应请求的耗时 2. 带宽消耗: 同时可传输多少数据。...如果返回类型是”String“直接返回,不需要发送完整的HTML。 3. 如果Action 方法中返回对象值会出现什么意外情况?...无法在Web中调用。 7. 如果我们需要其他函数来完成一些特定功能,但不是Action Method要如何实现?...View是与放置在特定目录下的Controller相关。这个特定文件夹是以”ControllerName”命名的,并且放在View文件夹内 2. 在多个控制器中无法重用View吗?

    3.1K60

    ASP.NET MVC学习笔记04数据传递

    上一篇的末尾讲到了,在了解模型之前,先来看看ASP.NET MVC是如何将数据控制器传递给视图的。...视图模板可以被控制器 用来产生格式化过的HTML从而返回给浏览器. 控制器负责给任何数据或者对象提供一个必需的视图模板,用这个视图模板来Render返回给浏览器的HTML。...相应的,一个视图模板应该只和控制器提供的数据进行交互。维持这种”隔离关系”可以帮助,保持代码的干净、测试性和更易维护。...模型绑定(model binder) 使得数据URL传递给控制器控制器将数据装入到ViewBag对象中,通过该对象传递给视图。然后视图为用户生成显示所需的HTML。...在上面的示例中,使用了 ViewBag对象把数据控制器传递给了视图。在后面的文章中,将使用视图模型来将数据从一个控制器传递到视图中。用视图模型来传递数据,这一般是首选的办法

    2.4K60

    ASP.NET Core中使用MediatR实现命令和中介者模式

    还使用代理类来调用特定类型的消息类来处理操作。 ?...MediatR库如何帮助我们 MediatR允许我们通过让控制器Action处理程序发送请求消息来将控制器与业务逻辑解耦。MediatR库支持两种类型的操作。...第二个示例将您展示一个事件,其中多个处理程序执行它们的工作,调用者并不关心接下来会发生什么,也不期望任何结果/响应。 第一个例子 在这种场景下,我们希望注册用户并期望对请求做出一些响应。...这些都是INotificationHandler继承下来的。...发布将调用订阅了NewUser 类的所有处理程序。这只是一个示例,我们可以根据命令进行思考,然后按照我们在命令模式中讨论的方式相应地执行一些操作。 Mediatr是如何提供帮助的?

    1.1K00

    ASP.NET MVC5+EF6+EasyUI 后台管理系统(21)-权限管理系统-跑通整个系统

    首先我们要理解一下筛选器 筛选器的由来及用途 有时,您需要在调用操作方法之前或运行操作方法之后执行逻辑。 为了对此提供支持,ASP.NET MVC 提供了筛选器。...筛选器是自定义类,可提供用于控制器操作方法添加操作前行为和操作后行为的声明性和编程性手段。 ASP.NET MVC 支持以下类型的操作筛选器: 授权筛选器。...OnActionExecuted 在操作方法之后运行,可以执行其他处理,如操作方法提供额外数据、检查返回值或取消执行操作方法。 结果筛选器。...同样,该框架将在操作方法完成后调用 OnActionExecuted 方法。 调用 OnResultExecuting 方法后,要立即调用您的操作返回ActionResult 实例。...{ List perm = null; //测试当前controller是否已赋权限值,如果没有

    2.4K70

    ASP.NET MVC5高级编程——(2)MVC模式的视图与Razor引擎

    3 ,常见的情况是控制器需要向视图提供一些信息,所以会传递一个数据转移对象,叫做模型(此处模型指的是数据容器,就是类似于Javabean),而视图将这个模型转换为一种适合显示给用户的格式。 ?...想让Index操作方法渲染一个不同的视图,可以提供一个不同的视图名称,代码如下: 1 public ActionResult Index() 2 { 3 return View("NotIndex...强类型视图允许设置视图的模型类型。因此可以控制器视图传递一个在两端都是强类型的模型对象,从而获得智能感知、编译器检查等好处。...在Controller方法中,可以通过重载的View方法中传递模型实例来指定模型,代码如下: 1 public ActionResult List() 2 { 3 var Musics = new...文件中声明: 1.3 理解ViewBag、ViewData和ViewDataDictionary 之前介绍了使用ViewBag控制器视图传递信息

    3.5K50

    ASP.NET MVC 5 -控制器访问数据模型

    Index() { return View(db.Movies.ToList()); } Movies控制器请求,从而返回Movies电影数据库表中的所有记录,然后将结果传递给...private MovieDBContext db = new MovieDBContext(); 强类型模型和 @model 关键字 在本系列前面教程中,您看到了使用ViewBag对象,控制器传递数据或对象给视图模板...电影控制器里的Details方法如下所示。 public ActionResult Details(int?...控制器访问数据模型是MVC数据传递中重要的知识部分,深入理解了这部分内容才能更好的进行MVC开发。当然,借助一些开发工具一样助力开发过程。...ASP.NET MVC 5 - 控制器访问数据模型 8. ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view) 9.

    5.9K50
    领券