Как создать кнопку, которая будет переходить на страницу Razor при нажатии (страница Razor в dotnet core 2)

Я могу использовать помощник тега привязки, чтобы перейти на другую страницу бритвы (с существующей страницы бритвы), например. это работает:

<a asp-page="./EditReport" asp-route-id="@report.IntegrityReportId" class="btn fa fa-edit"></a>

Как мне заставить аналогичную вещь работать, но с помощью кнопки? Я пытался:

<button type="button" asp-route-data="@report.IntegrityReportId" asp-route="EditReport">EditReport</button>

Но страница никогда не загружается. Я также пробовал использовать обработчик страниц с разными вариантами:

<input type="button" asp-page-handler="EditReport" asp-route="@report.IntegrityReportId"/>

и связанные (в файле cs страницы):

public ActionResult OnEditReport(int id)
        {
            return RedirectToPage("./EditReport", id);
        }

но этот метод никогда не вызывается (я также пробовал именовать метод OnPostEditReport, но та же проблема.

Если это поможет, мое исходное приложение NON-dotnet core отлично работало с:

<button type="button" title="Edit report" class="btn btn-datatable fa fa-edit" onclick="location.href = '@Url.Action("EditReport", "Home", new {id = report.IntegrityReportID})'"></button>

Любая помощь приветствуется. Спасибо.


person Blingers    schedule 27.02.2018    source источник


Ответы (6)


Мне удалось получить нужный мне эффект, используя приведенный ниже якорь - он выглядит как кнопка ..

<a asp-page="./EditReport" asp-route-id="@report.IntegrityReportId" class="btn btn-default"><i class="fa fa-edit"></i></a>
person Blingers    schedule 27.02.2018

Вы не можете использовать только кнопку, которая будет перенаправлять на другую страницу бритвы без javascript. Вы можете использовать кнопку отправки внутри тега формы, чтобы перенаправить на другую страницу бритвы. В следующем примере показано, как выполнить перенаправление GET, которое будет перенаправлять на страницу «О программе»:

<form method="get">
    <button type="submit" asp-page="./About">Click me to go to the About page</button>
</form>

если вы хотите, чтобы запрос POST, используйте следующий код:

<form method="post">
    <button type="submit" asp-page="./About">Click me to go to the About page</button>
</form>

В обоих случаях вы можете определить значения маршрутизации или обработчики, чтобы удовлетворить требования.

Я надеюсь, что это помогает.

person pitaridis    schedule 27.02.2018
comment
Спасибо, pitaridis, но я все еще не могу заставить это работать. страница действительно выглядит так, как будто она что-то делает, но затем снова появляется исходная страница. Как бы вы это сделали в javascript? Вы знаете, почему нам нужно делать это в javascript и / или почему это отличается от стандартного MVC, где я мог бы просто использовать formaction? Большое спасибо - person Blingers; 27.02.2018

Я знаю, что это на год позже, но вам нужно удалить 'type = "button"', также попробуйте удалить '.' из asp-page = "./ EditReport". BR.

person inv4der    schedule 20.02.2019

Приведенное ниже решение сработало для меня в моем проекте ASP.NET Core 3.1:

<a class="btn btn-primary btn-sm" asp-page="./Edit" asp-route-id="@item.Id"><i class="fas fa-user"></i> Edit</a>

Выделенный выше код находится в одной строке, точно так же, как переполнение стека представляет ответ. Примечание. Я решил отображать значок перед текстом на кнопке, а затем добавил один пробел перед меткой кнопки «Изменить», чтобы кнопка выглядела немного лучше.

person OJB1    schedule 18.12.2019

Это работает в ASPNET Core 3.1.

<form method="get" action="/myRazorPage">
    <button type="submit">Join Now</button>
</form>
person paultechguy    schedule 31.03.2020

используя кнопку:

<button type="button" class="btn" onclick="window.location.href = '/YourPage'">Button Title</button>
person Majid Shahabfar    schedule 28.07.2021