Asp.net mvc 仅包含cshtml页面的angularjs,不包含包含web api 2的html页面

Asp.net mvc 仅包含cshtml页面的angularjs,不包含包含web api 2的html页面,asp.net-mvc,angularjs,asp.net-mvc-4,asp.net-web-api,asp.net-mvc-routing,Asp.net Mvc,Angularjs,Asp.net Mvc 4,Asp.net Web Api,Asp.net Mvc Routing,我有asp。net mvc4项目。Angularjs是集成的。 我已经按照以前的要求构建了HTML页面和WebAPI2 现在由于某些原因,我不得不使用CSHTML页面。以前我只有web api项目模板,所以我不能使用cshtml页面,因为只有MVC控制器可以返回部分页面(cshtml),但我只使用web api 所以改变了整个项目模板,现在我可以拥有mvc控制器 简而言之,目前我有一个mvc4项目,它已经构建了web API和html页面 我只是想使用CSHTML页面,而不是使用HTML页面,其

我有asp。net mvc4项目。Angularjs是集成的。 我已经按照以前的要求构建了HTML页面和WebAPI2

现在由于某些原因,我不得不使用CSHTML页面。以前我只有web api项目模板,所以我不能使用cshtml页面,因为只有MVC控制器可以返回部分页面(cshtml),但我只使用web api

所以改变了整个项目模板,现在我可以拥有mvc控制器

简而言之,目前我有一个mvc4项目,它已经构建了web API和html页面

我只是想使用CSHTML页面,而不是使用HTML页面,其他事情应该是这样的

可能吗

我可能听起来很傻,但现在需要它。非常感谢您的帮助

仅限Web API、cshtml页面和angularjs。不是web API、html页面和angularjs


如果我将
html
页面替换为
cshtml,
角度路由会受到什么影响?

好吧,我就是这样使用它的

有这样的
index.cshtml

@using System.Web.Optimization
@inherits System.Web.Mvc.WebViewPage
@{ Layout = null; }<!DOCTYPE html>
<html data-ng-app="MyProject">
<head>
    <title data-ng-controller="TitleCtrl" data-ng-bind="Title">My Project</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="cache-control" content="max-age=0" />
    <meta http-equiv="cache-control" content="no-cache" />
    <meta http-equiv="expires" content="0" />
    <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
    <meta http-equiv="pragma" content="no-cache" />

    @Styles.Render("~/Content/min/css")
</head>
<body class="body" id="body">

    <div class="body" data-ui-view="body"></div>

    @Scripts.Render("~/js/angular")
    @Scripts.Render("~/js/MyProject")
</body>
</html>
所以,通过这种方式,我可以使用Bundle配置(javascript、css)的强大功能。。。在
http://mydomain/app
http://mydomain/app/
。检查也类似

同样在global.asax中,我们应该配置ASP.NET MVC:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("fonts*.woff");

    routes.MapRoute(
      name: "Default",
      url: "{controller}/{action}/{id}",
      defaults: new {controller = "Home", action = "Index", id =UrlParameter.Optional}
    );
}
而web API应:

const string IdPattern = @"\d+|[A-Za-z]{1,2}";
public static void SetRouting(HttpConfiguration config)
{
    // some custom routes
    ...            

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

假设我的菜单上有产品页面。在到达仪表板后,如果我点击产品菜单列表,它将如何将我重定向到products.cshtml页面?现在我已经像这样设置ui路由器。。。url:'/products',模板:'/products。html’我用MVC路由(主/索引)和Web API扩展了我的答案。诀窍是,当加载Home/Index并呈现Index.csthml时。。。我们不需要任何重定向。我们将有温泉。。。现在是加载所有视图的时候了…@HarishR谢谢你的评论!谢谢正如你最可能知道的,我通过nuget使用了更多的包(例如NHibernate…;),因此,不完全确定哪些是真正需要的,只是为了缩小。。。但我想我们需要MVC的所有功能(要使.cshtml运行,必须有控制器和操作)
Microsoft.AspNet.MVC
Microsoft.AspNet.Razor
。甚至可能
Microsoft.AspNet.WebPages
Microsoft.Web.Infrastructure
。然后进行捆绑
Microsoft.AspNet.Web.Optimization
,它应该需要
webfeel
。看起来可能很多,但是。。。我们得到:
.Include(“myscripts/*.js
确切地说,我真的从来没有想过将asp.net MVC与angular一起使用,但似乎只是为了得到捆绑/缩小,我不得不使用MVC,很遗憾
const string IdPattern = @"\d+|[A-Za-z]{1,2}";
public static void SetRouting(HttpConfiguration config)
{
    // some custom routes
    ...            

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