[asp.net-mvc]C# Web API 路由混合角路由

发布时间: 2017/3/25 1:47:03
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

它是可能使 MVC 应用程序使用路由仅表单 WEB API,但然后允许角做的路由使用其 routeprovider 休息吗?当我运行我的应用程序时出现︰

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# (尝试多个事物) 的控制器

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();
}

角的路由︰

   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

解决方法 1:

你应该使用 MVC 4/5 为您角的应用程序生成所有视图。你的主页可以初始化角应用程序,然后在你的路线,你可以使用 mvc url 为你的观点与布局设置为 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 索引操作页将你角的主页和所有其他可你角的分部视图。

编辑︰

在角你模板 url 是错误的。当角尝试加载模板 mvc 将返回主页模板 (即有吴 app) 所以它将初始化再次和你只能初始化吴应用程序一次。

更改到你模板 url/view/{controller/{action}

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