mic*_*yks 5 asp.net-mvc asp.net-mvc-routing asp.net-mvc-4 asp.net-web-api angularjs
我有asp.net mvc4项目.Angularjs是一体化的.我已经按照以前的要求构建了HTML页面和WEB API 2.
现在由于某种原因,我必须使用CSHTML页面.以前我只有web api项目模板所以我不能用cshtml页面,因为只有MVC控制器可以返回部分页面(cshtml),但我只使用web apis ...
所以改变了整个项目模板,所以现在我可以拥有mvc控制器......
总之,目前我已经建立了web apis和html页面的mvc4项目.....
我只是想使用CSHTML页面而不是使用HTML页面休息的东西应该是它们......
可能吗?
我可能听起来很傻但现在需要它.帮助将不胜感激......
仅限Web apis,cshtml页面和angularjs.不是web apis,html pages和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>
Run Code Online (Sandbox Code Playgroud)
注意:使用 Angular UI-Router
,这就是为什么ui-view
is in place
但仍然必须有HomeController
:
public class HomeController : Controller
{
public ActionResult Index()
{
// below I do some tricks to make app running on
// http://mydomain/app as well as on
// http://mydomain/app/ (see the / at the end)
var root = VirtualPathUtility.ToAbsolute("~/");
var applicationPath = Request.ApplicationPath;
var path = Request.Path;
var hasTraillingSlash = root.Equals(applicationPath
, StringComparison.InvariantCultureIgnoreCase)
|| !applicationPath.Equals(path
, StringComparison.InvariantCultureIgnoreCase);
if (!hasTraillingSlash)
{
return Redirect(root + "#");
}
// my view is not in Views, but in the root of a web project
return View("~/Index.cshtml");
}
}
Run Code Online (Sandbox Code Playgroud)
因此,这样我就可以使用捆绑配置(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}
);
}
Run Code Online (Sandbox Code Playgroud)
而网络 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 }
);
Run Code Online (Sandbox Code Playgroud)