【问题标题】:Why does not work ASP.NET Core, Attribute Routing in Areas为什么 ASP.NET Core 不起作用,区域中的属性路由
【发布时间】:2018-09-01 12:07:14
【问题描述】:

我创建了一个空项目。

Startup.cs

public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddLocalization(options => options.ResourcesPath = "Resources");
            services.AddMvc().AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix).AddDataAnnotationsLocalization();

            services.Configure<RequestLocalizationOptions>(options =>
            {
                var supportedCultures = new[]
                {
                new CultureInfo("en-US"),
                new CultureInfo("de-DE"),
                new CultureInfo("tr-TR"),
                };

                options.DefaultRequestCulture = new RequestCulture(culture: "en-US", uiCulture: "en-US");
                options.SupportedCultures = supportedCultures;
                options.SupportedUICultures = supportedCultures;
                // options.RequestCultureProviders = new List<IRequestCultureProvider> { new CookieRequestCultureProvider() };
            });

            services.AddMvc();
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {

            var localizationOption = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();

            app.UseRequestLocalization(localizationOption.Value);

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            app.UseMvc();
        }
    }

文件夹结构

Project
|
|--Areas 
|---Profile
|----Controllers
|         HomeController
|       

HomeController

[Area("Profile")]
public class HomeController : Controller
{
    [Route("About")]
    public IActionResult About()
    {
        return View();
    }
}

我是asp.net core的新手,我只是想了解一下,这个url“http://localhost:41036/profile/about”总是返回“404 not found”,有点混乱。我做错了什么?如果你能帮助我,我会很高兴。

【问题讨论】:

    标签: c# asp.net-core routing attributerouting


    【解决方案1】:

    您需要为您的Startup 中的区域提供路线。

    app.UseMvc(routes =>
    {
        routes.MapRoute("areas", "{area:exists}/{controller=Home}/{action=Index}/{id?}");
        routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
    });
    

    你需要给你的控制器类添加一个路由属性。

    [Area("Profile")]
    [Route("[area]/[controller]")]
    public class HomeController : Controller 
    {
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-05
      • 2013-12-26
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 2022-10-24
      • 2021-09-04
      相关资源
      最近更新 更多