【发布时间】:2017-01-25 01:54:33
【问题描述】:
我使用 ASP.NET Core MVC 和 AngularJS 创建了一个项目,该项目具有客户端依赖项 NPM、Bower、Gulp。在wwwroot 文件夹中创建的index.html 页面不会默认显示。
index.html
<!DOCTYPE html>
<html ng-app="myQuotesApp">
<head>
<meta charset="utf-8" />
<title>My Quotes App</title>
<script src="lib/angular/angular.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular-resource.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular-route.js"></script>
<script src="app.js"></script>
</head>
<body ng-cloak>
<div ng-controller="quotesController">
<h2>List Of Quotes</h2>
<ul>
<li ng-repeat="quote in quotes">
<p>"{{quote.Content}}" - {{quote.Author}}</p>
</li>
</ul>
</div>
</body>
</html>
Startup.cs
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
//app.Run(async (context) =>
//{
// await context.Response.WriteAsync("Hello World!");
//});
app.UseMvc();
}
}
项目.json
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.1",
"type": "platform"
},
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.1"
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"wwwroot",
"web.config"
]
},
"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
app.js 文件
(function () {
'use strict';
angular.module('MyQuotesApp', [
// Angular modules
'ngRoute',
//////////////////
'ngResource',
///////////////insert this ^^^^
// Custom modules
"quotesService"
// 3rd Party Modules
]);
})();
quotesService.cs
(function () {
'use strict';
var quotesService = angular.module('quotesService', ['ngResource']);
quotesService.factory('Quotes', ['$resource', function ($resource) {
return $resource('/api/quotes/', {}, {
query: { method: 'GET', params: {}, isArray: true }
});
}]);
})();
quotesController.js
(function () {
'use strict';
angular
.module('myQuotesApp')
.controller('quotesController', quotesController);
quotesController.$inject = ['$scope','Quotes'];
function quotesController($scope, Quotes) {
$scope.quotes = Quotes.query();
//$scope.title = 'quotesController';
//activate();
//function activate() { }
}
})();
QuotesConroller.cs
namespace MyQuotesApp.api
{
[Route("api/[controller]")]
public class QuotesController : Controller
{
// GET: api/values
[HttpGet]
public IEnumerable<Quote> Get()
{
return new List<Quote> {
new Quote {ID=1, Content="abc", Author="abc123" },
new Quote {ID=2, Content="abcd", Author="abcd123" },
new Quote { ID=3, Content="abcde", Author="abcde123"}
};
//return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
// POST api/values
[HttpPost]
public void Post([FromBody]string value)
{
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
}
【问题讨论】:
-
在 mvc 中你不设置默认页面,而是使用路由来决定要服务的页面
-
我在这个使用 index.html 中有演示,它放在 wwwroot 文件夹中,它作为默认值工作,但在我的代码中不起作用..
-
贴出路由类的代码
-
app.UseMvc(config => { config.MapRoute(name: "Default", template: "{controller=quotesController}/{action=Index}/{id?}" ); }) ;
标签: angularjs asp.net-core asp.net-core-mvc asp.net-core-1.0