#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 или угловое приложение