如何从 API 控制器更改 MVC 中的视图?

How to change Views in MVC from API controller?

我有一个 mvc 应用程序,我想知道如何从 API 控制器而不是 mvc 控制器更改视图(cshtml 页面)。这是因为 cshtml 和应用程序通过 ajax 服务进行通信。

请尽快回复我。谢谢

您无法从 api 控制器更改 cshtml,它们只是 return 一个序列化对象。您需要在 ajax 脚本中解析此对象并使用 jquery/javascript 更改您的 cshtml

API 控制器设计用于 Web 服务之类的东西,或者为 Angular JS 等前端渲染框架编写服务器端后端。

你可以做你想做的事,但你必须从你的 API 控制器中 return 类似 JSON 的东西,并用 Angular JS 转换它。

其次,您可以在普通的 MVC 控制器中执行 AJAX,只需遵循这样的指南,Guide

我通常将 MVC 应用程序构建为混合应用程序。我将传统的 MVC 与 Angular JS 混合使用,以便我的所有页面都通过正常的 get 请求加载正常的 url,但是使用 angular 进行 ajax 回发,这样我就不必担心 SEO或者使用类似 prerender.io...

我所有的表单,如联系我们、登录等,都被 angular 控制器挂钩,并且都执行 ajax 回发,速度也非常快。

评论更新:

如果您想根据网络 api 结果的响应在 angular 中重定向。您可以这样做,

public object TheMethod(...)
{
    var theJson = new 
    {
        type = "Redirect",
        data = new 
        {
           url = "/submitted",
           form = new 
           {
               firstName = "Bob",
               lastName = "Smith"
           }            
        }
    };
    return theJson;
}

然后在您的 angular 响应中,检查类型,如果是重定向,则执行 window.location = result.data.url;