gpt4 book ai didi

C# Web API 路由与 Angular 路由混合

转载 作者:太空狗 更新时间:2023-10-29 23:07:21 25 4
gpt4 key购买 nike

是否可以让 MVC 应用程序仅使用来自 WEB API 的路由,然后允许 Angular 使用其路由提供程序完成其余的路由?当我运行我的应用程序时,我得到:

GET http://localhost:8080/Views/Home/Index.html 404 (Not Found) 

MVC路由RouteConfig.Cs

 // serves plain html
routes.MapRoute(
name: "DefaultViews",
url: "view/{controller}/{action}/{id}",
defaults: new { id = UrlParameter.Optional }
);

// Home Index page have ng-app
routes.MapRoute(
name: "AngularApp",
url: "{*.}",
defaults: new { controller = "Home", action = "Index" }
);

WebAPIConfig.cs

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

C# Controller (尝试多种操作)

public ActionResult Index()
{
ViewBag.Title = "Home Page";

return View();
}

public ActionResult Test()
{
var result = new FilePathResult("~/Views/Home/test.html", "text/html");
return result;
}

public ActionResult Show()
{
ViewBag.Title = "HomePage";

return View();
}

Angular 路由:

   app.config(function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when("/Tests", { templateUrl: "Views/Home/test.html", controller: "homeCtrl" })
.when("/Shows", { templateUrl: "/Home/Show.cshtml", controller: "homeCtrl" })
.otherwise({ redirectTo: "/" });
});

供引用的文件结构图片:

enter image description here

编辑:GitHub 工作示例: https://github.com/allencoded/CSharpAngularRouting

最佳答案

您应该使用 MVC 4/5 为您的 Angular 应用程序生成所有 View 。您的主页可以初始化 Angular 应用程序,然后在您的 route ,您可以将 mvc url 用于您的 View ,并将布局设置为 null。

编辑:

创建 Web Api 项目 在 RouteConfig.cs 中添加这个

// serves plane html
routes.MapRoute(
name: "DefaultViews",
url: "view/{controller}/{action}/{id}",
defaults: new { id = UrlParameter.Optional }
);

// Home Index page have ng-app
routes.MapRoute(
name: "AngularApp",
url: "{*.}",
defaults: new { controller = "Home", action = "Index" }
);

_ViewStart.cshtml

@{
Layout = null;
}

HomeController Index 操作页面将是您的 Angular 主页,所有其他页面都可以是您的 Angular 局部 View 。

编辑:

您的 Angular 模板 url 是错误的。当 Angular 尝试加载模板时,mvc 将返回主页模板(具有 ng-app),因此它将再次初始化,您只能初始化 ng-app 一次。

将您的模板 url 更改为 /view/{controller/{action}

 .when("/Tests", { templateUrl: "view/Home/test", controller: "homeCtrl" })

关于C# Web API 路由与 Angular 路由混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25320041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com