Asp.net mvc 仅包含cshtml页面的angularjs,不包含包含web api 2的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页面和angularjsAsp.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页面,其
如果我将
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 }
);