ASP. NET Core: есть ли способ вызвать метод из кнопки формы HTML? - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь вызвать свой метод c# из формы HTML, которая обновляет базу данных.

Вот моя HTML форма:

<form runat="server">
    <label for="Fornavn">First name:</label><br>
    <input type="text" id="Fornavn" name="Fornavn"><br>
    <label for="Efternavn">Last name:</label><br>
    <input type="text" id="Efternavn" name="Efternavn"><br>
    <label for="Brugernavn">Brugernavn:</label><br>
    <input type="text" id="Brugernavn" name="Brugernavn"><br><br>
    <a asp-action="updateDbTest"><button class="btn btn-primary">update</button></a>
</form>

А вот метод, который я пытаюсь вызвать (updateDbTest()):

public void updateDbTest()
{
    using (SqlConnection cnn = new SqlConnection(myConnectionString))
    {
        String query = "INSERT INTO Bruger (Fornavn,Efternavn,Brugernavn) VALUES (@Fornavn,@Efternavn,@Brugernavn)";

        using (SqlCommand command = new SqlCommand(query, cnn))
        {
             command.Parameters.AddWithValue("@Fornavn", "abc");
             command.Parameters.AddWithValue("@Efternavn", "abc");
             command.Parameters.AddWithValue("@Brugernavn", "abc");

             cnn.Open();
             int result = command.ExecuteNonQuery();

             // Check Error
             if (result < 0)
                 Console.WriteLine("Error inserting data into Database!");
         }
     }
 }

РЕДАКТИРОВАТЬ: I wi sh чтобы форма html вызывала метод updateDbTest() после того, как он был отправлен с помощью нажимаемой кнопки. Затем я сделаю sh это, чтобы обновить sh страницу, если это возможно.

Я попытался использовать asp:button, но, похоже, это не работает на ASP. NET Core. Любые отзывы приветствуются, спасибо.

1 Ответ

0 голосов
/ 22 марта 2020

Вам не нужно <a> вообще. Вам просто нужно <button> (или <input type='submit'...) внутри <form>.

Когда кнопка нажата, форма будет отправлена ​​в метод, указанный asp-action в <form> .

Если (как здесь) нет asp-action на <form>, то он будет передан методу действия с тем же именем, что и тот, который создал представление формы, разница между двумя из-за того, что форма была сгенерирована с помощью [HttpGet] версии метода и будет вызвана обратно с [HttpPost] версией.

До сих пор не ясно, является ли updateDbTest() методом, который вы хотите вызвать при отправке формы , Если вы отправляете в другой метод, просто вызовите updateDbTest() непосредственно в C# из этого другого метода.

Поскольку updateDbTest() не просматривает данные формы, я бы предположил, что это не тот метод, которому вы отправляете.

Однако, если updateDbTest() - это метод, которому вы хотите подчиниться, то он требует некоторой работы. Метод действия (т. Е. Метод, вызываемый непосредственно из клиента) должен иметь тип возвращаемого значения IActionResult, а затем возвращать инструкции для того, что клиент должен отобразить, обычно это либо return View(...);, либо return RedirectTo...(...);

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...