【问题标题】:ASP.NET Core: Is there any way to call a method from an HTML form button?ASP.NET Core:有没有办法从 HTML 表单按钮调用方法?
【发布时间】:2020-07-02 12:23:12
【问题描述】:

我正在尝试从更新数据库的 HTML 表单中调用我的 c# 方法。

这是我的 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!");
         }
     }
 }

编辑:我希望 html 表单在通过可点击按钮提交后调用 updateDbTest() 方法。如果可能的话,我希望它刷新页面。

我尝试使用asp:button,但这似乎不适用于 ASP.NET Core。任何反馈都非常感谢,谢谢。

【问题讨论】:

  • 不清楚您在这里要做什么。您想在提交表单时调用 updateDbTest()(在这种情况下,您想重定向到哪里?)还是只想在服务器上运行 updateDbTest() 方法同时保持在同一页面上?
  • 它被称为 ajax 你必须调用一个请求。
  • @DanielA.White 你能详细说明一下吗?
  • 我很抱歉不清楚。我对帖子进行了编辑,以更详细地解释我的问题。谢谢你。 @JasperKent

标签: c# html asp.net button methods


【解决方案1】:

您根本不需要&lt;a&gt;。您只需要在&lt;form&gt; 中添加一个&lt;button&gt;(或&lt;input type='submit'...)。

当按钮被点击时,表单将提交到&lt;form&gt;上asp-action指定的方法。

如果(如这里)在&lt;form&gt; 上没有asp-action,那么它将被提交给与创建表单视图的方法同名的操作方法,两者之间的区别在于表单使用[HttpGet] 版本的方法生成,将使用[HttpPost] 版本回调。

尚不清楚updateDbTest() 是否是您要在表单提交时调用的方法。如果您要提交到其他方法,则只需在 C# 中直接从该其他方法调用 updateDbTest()。

由于updateDbTest() 不查看任何表单数据,所以我认为这不是您要提交的方法。

但是,如果updateDbTest() 是您要提交的方法,那么它需要一些工作。一个动作方法(即直接从客户端调用的方法)必须有一个返回类型IActionResult,然后返回客户端应该显示的指令,通常是return View(...);或return RedirectTo...(...);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 2011-05-20
    • 2020-10-23
    • 2019-06-20
    • 2016-04-13
    相关资源
    最近更新 更多