ASP.NET核心路由更改

时间:2016-06-20 17:12:46

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

我需要更新一些静态网页,我想花时间在Visual Studio 2015中使用ASP.NET Core(带有MVC 6的ASP.NET 5)重新创建它们。我想使用它重建它微软最新的技术,将来更容易进行更改。

当我在localhost上启动项目时,默认网站加载正常,但任何链接页面都会中断,因为默认情况下它们会路由到/Home控制器。此外,当MVC嵌套这些页面时,找不到项目的 jquery css 图像

Startup.cs 文件中,有以下方法:

// 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(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

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

    app.UseStaticFiles();

    app.UseIdentity();

    // Add external authentication middleware below. To configure them please see http://go.microsoft.com/fwlink/?LinkID=532715

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

这是开箱即用的配置方式。

我们公司不希望/Home(或其他任何内容)卡在其所有网页的网址上。

我为不同的页面创建了各种 IActionResult 方法,但它们都做同样的事情:

public IActionResult Index()
{
    return View();
}

我们也有链接到我们网站的公司。改变我们页面的结构也会导致其他公司停止并做出改变。

我如何获取字符串,例如{controller}/{action}/{id?},并返回典型的链接,例如action.aspx?id=x

或者,有没有办法告诉MVC不要为某些页面使用模板?

如果这是愚蠢的基础,我道歉。我通常使用Windows Forms。

1 个答案:

答案 0 :(得分:1)

有两种解决方案:

路线模板:

app.UseMvc(routes =>
{
    routes.MapRoute(
        "HomeRoute", 
        "{action}/{id}", 
        new 
        { 
            controller = "Home", 
            action = "Index", 
            id = UrlParameter.Optional
        });
});

属性路由

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

您可以使用ASP.NET MVC Boilerplate创建一个新项目,以获得使用此方法的完整工作示例。