Как переписать URL используя ядро ​​asp.net - PullRequest
0 голосов
/ 04 сентября 2018

Я разработчик рабочего стола. Но мне нужно научиться делать веб-разработку с использованием ASP.net Core. Итак, я сейчас задаю вопрос. Как правильно переписать URL моего сайта:

Это структура моего сайта

enter image description here

Вот как я могу добавить ссылку на мою страницу макета

<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);

Но это хорошая практика? Мне всегда нужны контроллер и действие в каждом моем перенаправлении. Поэтому, если я изменил имя действия, мне также нужно изменить перенаправление и переписать.

И еще одна проблема. При наведении мыши на ссылку он показывает путь http://localhost:64419/Excel/Excel так как я могу спрятать этот материал?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Перезапись URL может снизить производительность приложения. Там, где это возможно, следует ограничить количество и сложность правил.

Если вы хотите направить на Excel Action в Excel Controller с URL 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 контроллере.

0 голосов
/ 04 сентября 2018

При этом я упоминаю решение для первой проблемы. Пожалуйста, введите код ниже на странице макета

 <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?}");
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...