ASP.NET Приложение Core Razor — Как создать событие щелчка для кнопки?

#c# #asp.net-mvc #razor

Вопрос:

Я создал решение для приложения razor, используя шаблон. Я пытаюсь использовать базовый шаблон для добавления пользовательской логики. В частности, я пытаюсь добавить кнопку для загрузки файла, но, похоже, не могу вызвать событие щелчка.

Это то, что у меня есть для кнопки внутри Index.cshtml:

 @page @model IndexModel @{  ViewData["Title"] = "File Upload Demo"; }   lt;button type="button" id="uploadsmall"  onclick="location.href='@Url.Action("UploadSmall","IndexModel")'"gt;  Upload Small File  lt;/buttongt;  

И вот что у меня есть в файле Index.cshtml.cs:

 using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks;  using Azure.Identity; using Azure.Storage.Blobs;   namespace commDemo1.Pages {  public class IndexModel : PageModel  {  private readonly ILoggerlt;IndexModelgt; _logger;   public IndexModel(ILoggerlt;IndexModelgt; logger)  {  _logger = logger;  }   public async void OnGet()  {  Console.WriteLine('hello world');  }   public void UploadSmall()  {  Console.WriteLine("in the click event handler");  }   } }  

Когда я запускаю код, приложение запускает OnGet() в модели, но оно никогда не попадает в UploadSmall()

Что я пробовал

Я также попытался «добавить» контроллер под названием IndexController и изменил метод HTTP POST по умолчанию «создать» на UploadSmall(). Затем я изменил имя класса в Url.Действие для кнопки на «IndexController» вместо «IndexModel», но это ничего не изменило.

Извините за вопрос нуба, но я был бы признателен за любую помощь.

Комментарии:

1. Во-первых, вам нужен HTML lt;formgt; -код, если вы собираетесь отправить (ОПУБЛИКОВАТЬ) какой-либо файл. Эта кнопка обрабатывается Javascript и просто перемещает пользователей /UploadSmall , например, к ней, и она использует метод GET. Я не знаю Url.Action , как это работает за пределами ApiController, я давно отказался от этого и просто использую фиксированный URL, но Razor Pages так не работает. Вам нужен OnPost ответ для получения почтовых запросов.

2. Не рекомендуется использовать java со страницами razor. Лучше использовать кнопку «Отправить». В противном случае попробуйте создать MVC или угловое приложение