C# 从类调用MVC控制器

C# 从类调用MVC控制器,c#,asp.net-mvc,asp.net-mvc-4,controller,C#,Asp.net Mvc,Asp.net Mvc 4,Controller,我被要求构建一个MVC4项目,其中控制器方法可以由外部服务调用 除了每个服务端点将呈现不同的视图之外,我关于这个外部服务的信息非常有限 我的工作是创建这些视图,并手动调用控制器以呈现服务端点要求的视图 服务和MVC项目将作为单独的项目构建。MVC项目是一个独立的项目。该服务希望返回表单的HTML,并将其传递给另一个项目 我不知道如何通过不同解决方案中的项目的代码隐藏来调用控制器。任何链接/教程都很好 如果我的问题含糊不清或缺乏信息,请道歉。请告诉我,如果是的话,我会添加更多的信息。 < p>您可

我被要求构建一个MVC4项目,其中控制器方法可以由外部服务调用

除了每个服务端点将呈现不同的视图之外,我关于这个外部服务的信息非常有限

我的工作是创建这些视图,并手动调用控制器以呈现服务端点要求的视图

服务和MVC项目将作为单独的项目构建。MVC项目是一个独立的项目。该服务希望返回表单的HTML,并将其传递给另一个项目

我不知道如何通过不同解决方案中的项目的代码隐藏来调用控制器。任何链接/教程都很好


如果我的问题含糊不清或缺乏信息,请道歉。请告诉我,如果是的话,我会添加更多的信息。

< p>您可以考虑创建<代码> API控制器<代码> >(代码> WebAPI <代码>),而不是正常的<代码>控制器< /> >

然后返回视图,如图所示-

WebAPI作为服务公开给客户端,它们可以像使用其他服务一样使用它们

然而,这将是一种黑客行为,建议将WebAPI用作restful服务,并仅返回xml或json

现在响应应该是HTML格式的,您可以使用
HttpClient
从调用应用程序调用控制器(MVC或WebApi)

少部分链接-


我建议您避免使用中间层,直接从外部服务调用MVC控制器或Web Api

查询外部资源的快速示例:

public string ListProductsAsync()
{
    var client = new HttpClient();

    var response = client.GetStringAsync("http://youriste/controller/action");

    return response.Result;
}

对于更高级的解释,以下链接将帮助您。

只是为了理解…如果外部服务可以调用您的中间层,为什么它不直接调用您的MVC控制器操作来执行POST?@Freerider it绝对可以-我只是认为最好添加一个中间层。不管怎样,我也不知道如何从服务调用控制器方法。我不明白你的问题?您希望您的视图直接调用服务,或者您的操作调用服务您不理解-“MVC项目是一个独立的项目,不会被托管”。在托管MVC project之前,您将无法使用它。请指定外部服务端需要以何种格式响应。是Json、Xml还是Html格式?以及外部服务将如何使用这些数据,因为只有您才能决定如何设计您的解决方案。我将查看该链接,谢谢。快速提问-外部服务能够调用APIController的方法吗?如果是这样的话,有没有一个例子可以让我看一下?@user2905455:是的,可以,一个关于WebApi的快速入门教程肯定会有帮助。请参阅-我的困惑在于控制器方法调用。如何从代码隐藏中执行此操作?@user2905455调用控制器的方法是执行GET、POST、PUT。。。操作。与从用户界面调用控制器的方式相同,存在使用http方法GET、POST等从服务器到服务器调用控制器的选项,如我的回答所示,例如使用HttpClient中的GetStringAsync()方法。如果您以另一种方式调用动作控制器,那么使用控制器是没有意义的。