我是桌面开发人员。但是我需要学习如何使用ASP.net Core进行Web开发。所以我现在在这里问问题。如何正确重写我的网站的网址:
这是我网站的结构
这是我向版面页面添加链接的方式
<li><a asp-action="Index" asp-controller="Home">Home</a></li>
<li><a asp-action="Excel" asp-controller="Excel">Excel</a></li>
要做的是重写此URL
http://localhost:64419/Excel/Excel
当前我正在使用此中间件
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);
但这是一个好习惯吗?在每个重定向中,我始终需要Controller和Action。因此,如果我更改了动作名称,则还需要更改重定向和重写。
还有另一个问题。当我将鼠标悬停在链接中时 它显示了路径http://localhost:64419/Excel/Excel,所以如何隐藏这些东西?
谢谢
答案 0 :(得分:2)
URL重写会降低应用程序的性能。在可行的情况下,应限制规则的数量和复杂性。
如果您想使用URL Excel Action
路由到Excel Controller
中的ExcelOnly
,可以尝试如下的Route
:
public class ExcelController : Controller
{
[Route("ExcelOnly")]
public IActionResult Excel()
{
return View();
}
}
它将生成<li><a asp-action="Excel" asp-controller="Excel">Excel</a></li>
到
<a href="/ExcelOnly">Excel</a>
当您输入http://localhost:64419/ExcelOnly
时,它将路由到Excel
控制器中的Excel
操作。
答案 1 :(得分:0)
在这里,我提到第一个问题的解决方案。 请在“布局”页面中输入以下代码
<li> <a asp-area="" asp-controller="Excel" asp-action="Excel">Excel</a></li>
在startup.cs页面中输入以下代码
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}