Helpex - Trao đổi & giúp đỡ Đăng nhập
4

Tất cả các ví dụ về việc sử dụng AngularJs với MVC6 / vNext / .NET5 đều sử dụng tệp index.html tĩnh nằm trong wwwroot. Đã xong, nhưng bây giờ tôi cần tải trang MVC index.cshtml để thay vào đó tôi có thể đưa các cài đặt có trong config.json của mình vào trang.

Tất cả những gì tôi muốn là một trang mặc định (Trang chủ), được tải bất kể url nào được yêu cầu, miễn là url đó không phải là tệp js / css hoặc bộ điều khiển api.

Tôi đã thử thêm Configure(IApplicationBuilder app, IServiceProvider serviceProvider)tệp này vào phương pháp của mình , nhưng bây giờ, các tệp js và css của tôi đều kéo trở lại tệp Home / Index.cshtml

app.UseMvc(options =>
{
    options.MapRoute("Api",
        template: "api/{version}/{controller}/{action?}",
        defaults: new { version = "v1", controller = "Page" });

    options.MapRoute(
        name: "default",
        template: "{*url}",
        defaults: new { controller = "Home", action = "Index" });
});

Ứng dụng của tôi tải lên trên địa chỉ mặc định http: // localhost: port , không có thư mục bổ sung nào để bắt đầu. Thông qua angleJ, người dùng có thể truy cập các url như

http://localhost:6000/page
http://localhost:6000/page/9
http://localhost:6000/another
http://localhost:6000/another/9/sub

Tất cả những thứ này sẽ tải trang Home / Index.cshtml và để góc tiếp quản việc định tuyến.

Tôi đã thấy một tùy chọn để thêm thứ gì đó vào tệp web.config, nhưng tôi sẽ không sử dụng IIS nên đây không phải là một tùy chọn

CHỈNH SỬA Nếu tôi cập nhật các tuyến đường của mình cho điều này, nó dường như tải trang và tất cả các tệp js / css, điều này thật tuyệt. Nhưng nếu tôi cố gắng đi thẳng đến một tuyến đường góc, không có gì tải cả.

app.UseMvc(options =>
{
    options.MapRoute("Api",
        template: "api/{version}/{controller}/{action?}",
        defaults: new { version = "v1", controller = "Page" });

    options.MapRoute(
        name: "default",
        template: "{controller}/{action?}",
        defaults: new { controller = "Home", action = "Index" });
});

CHỈNH SỬA 2

public void Configure(IApplicationBuilder app, IServiceProvider serviceProvider)
{
    // add automapper registrations
    app.RegisterMappingFiles();

    // Enable all static file middleware
    app.UseStaticFiles();

    // Enable Mvc for controllers
    app.UseMvc(options =>
    {
        options.MapRoute(
            name: "default",
            template: "{controller}/{action?}",
            defaults: new { controller = "Home", action = "Index" });
    });

}
4 hữu ích 2 bình luận 1.4k xem chia sẻ
3

Tôi nghĩ rằng, bạn đã không thêm bằng cách sử dụng Tệp tĩnh trong đường dẫn yêu cầu của mình, do đó, hãy yêu cầu chống lại chúng, đã xử lý định tuyến MVC:

    public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
    {
        app.UseStaticFiles();

        app.UseMvc(options =>
        {
            options.MapRoute("Api",
        template: "api/{version}/{controller}/{action?}",
        defaults: new { version = "v1", controller = "Page" });

            options.MapRoute(
                name: "default",
                template: "{*url}",
                defaults: new { controller = "Home", action = "Index" });
        });

    }

Ứng dụng gọi ra của bạn.

Documentaion trên docs.asp.net

3 hữu ích 5 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ c# asp.net asp.net mvc asp.net-core , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading