如何使用asp.net内核重写URL
我是一名桌面开发人员。但是我需要学习如何使用ASP.net核心进行web开发。所以我现在在这里问一个问题。如何正确重写网站的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&
<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重写会降低应用程序的性能。在可行的情况下,您应该限制规则的数量和复杂性
如果您想使用URLExcelOnly
在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>