0

我使用ASP.NET Core MVC和AngularJS創建了一個具有客戶端依賴關係NPM,Bower和Gulp的項目。在wwwroot文件夾中創建的index.html頁面不顯示爲默認值。ASP.NET Core MVC 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(); 
    } 
} 

project.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) 
    { 
    } 
} 
} 
+1

在mvc中,您不設置默認頁面,而是使用路由來決定要提供的頁面 – Baahubali

+0

我在此示例中使用了index.html,它放置在wwwroot文件夾中,並且它作爲默認工作,但在我的代碼中不起作用。 –

+0

發佈路由類代碼 – Baahubali

回答

0

你沒有一個動作時,指定你收到的GET請求做什麼根(/)。

[HttpGet('/')] 
public IActionResult Index() 
{ 
    return View(); 
} 

在MVC中,當您指定return View();沒有提供特定視圖,它會搜索的Action後命名視圖(控制器方法名,在這種情況下Index

+0

其運行但index.html不運行 –

+0

@PrafulChauhan您的'index.html'文件位於哪裏?它應該默認在'Views/Home/Index.html'或'Views/Index.html'我相信。 – James

+0

index.html位於wwwroot摺疊,在asp.net核心與angularjs也放在wwwroot摺疊.. –

0

同樣的問題 - 的index.html根據asp.net核心建議在wwwroot文件夾中。那麼如何將此頁面顯示爲該網站的默認值?我瞭解(從MVC5天開始)控制器不會提供「.html」頁面?

0

您需要添加app.UseDefaultFiles()app.UseStaticFiles()

app.UsedefaultFiles()看起來像default.html中的index.htmlwwwrootfolder默認的文件。