Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用asp.net内核重写URL_Asp.net_Asp.net Mvc_Asp.net Core_Asp.net Core 2.0 - Fatal编程技术网

如何使用asp.net内核重写URL

如何使用asp.net内核重写URL,asp.net,asp.net-mvc,asp.net-core,asp.net-core-2.0,Asp.net,Asp.net Mvc,Asp.net Core,Asp.net Core 2.0,我是一名桌面开发人员。但是我需要学习如何使用ASP.net核心进行web开发。所以我现在在这里问一个问题。如何正确重写网站的URL: 这是我网站的结构 这就是我如何将链接添加到布局页面的方法 <li><a asp-action="Index" asp-controller="Home">Home</a></li> <li><a asp-action="Excel" asp-controller="Excel">Excel&

我是一名桌面开发人员。但是我需要学习如何使用ASP.net核心进行web开发。所以我现在在这里问一个问题。如何正确重写网站的URL:

这是我网站的结构

这就是我如何将链接添加到布局页面的方法

<li><a asp-action="Index" asp-controller="Home">Home</a></li>
<li><a asp-action="Excel" asp-controller="Excel">Excel</a></li>
 <li> <a asp-area="" asp-controller="Excel" asp-action="Excel">Excel</a></li>
目前我正在使用这个中间件

https://www.nuget.org/packages/Microsoft.AspNetCore.Rewrite/
这是我的密码

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.UseDeveloperExceptionPage();
            app.UseStatusCodePages();
            app.UseStaticFiles();
            app.UseMvc(routes =>
            {
                var rewrite = new RewriteOptions()

                .AddRewrite(@"ExcelOnly", "Excel/Excel", skipRemainingRules: false);

                app.UseRewriter(rewrite);

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

                routes.MapRoute(
                   name: "excel",
                   template: "{controller=Excel}/{action=Excel}"
                   );
            });
        }
由于上面的代码,我能够将URL重写为

http://localhost:64419/ExcelOnly
只需在URL中键入链接

但是当我点击布局页面中的链接时。页面已加载,但它使用了链接
http://localhost:64419/Excel/Excel
如何正确重写URL

我需要搜索哪些内容。我找不到解决办法。也许我用错了搜索词。所以我决定在这里问

多谢各位

更新:

我能够在我想要的URL中重定向页面

使用此代码

var rewrite = new RewriteOptions()
                .AddRedirect("Excel/Excel", "ExcelOnly")
                .AddRewrite(@"ExcelOnly", "Excel/Excel", skipRemainingRules: false);

                app.UseRewriter(rewrite);
但这是一种好的做法吗?我总是需要控制器和每个重定向中的操作。因此,如果我更改了操作名称,我还需要更改重定向和重写

还有一个问题。当我将鼠标悬停在链接中时 它显示了路径,我怎么能隐藏这些东西


谢谢

在此我要提到第一个问题的解决方案。 请在布局页面中输入以下代码

<li><a asp-action="Index" asp-controller="Home">Home</a></li>
<li><a asp-action="Excel" asp-controller="Excel">Excel</a></li>
 <li> <a asp-area="" asp-controller="Excel" asp-action="Excel">Excel</a></li>
URL重写会降低应用程序的性能。在可行的情况下,您应该限制规则的数量和复杂性

如果您想使用URL
ExcelOnly
Excel控制器中路由到
Excel操作
,您可以尝试如下所示的
route

    public class ExcelController : Controller
{
    [Route("ExcelOnly")]
    public IActionResult Excel()
    {
        return View();
    }
}
它将生成

  • 当您输入
    http://localhost:64419/ExcelOnly
    ,它将路由到
    Excel
    控制器中的
    Excel
    操作。

    谢谢您的回答。谢谢你告诉我需要避免的事情。
    <a href="/ExcelOnly">Excel</a>