繁体   English   中英

为什么ASP.NET Core,区域中的属性路由不起作用

[英]Why does not work ASP.NET Core, Attribute Routing in Areas

我创建了一个空项目。

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核心的新手,我只是想了解,这个网址“ http:// localhost:41036 / profile / about ”总是返回“ 404 not found ”,这有点令人困惑。 我做错了什么? 如果你帮助我,我会很高兴的。

您需要一个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 
{
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM