【问题标题】:How to make a Web API Post Method trigger in a Html Form submit?如何在 HTML 表单提交中触发 Web API 发布方法?
【发布时间】:2019-01-01 03:58:01
【问题描述】:

目前我有一个带有 Post Method [form body] 的 Web API 控制器,它使用 PostMan 向数据库发布一个帖子。

现在我唯一想做的就是在提交 Html form='post' 时让 Web API 中的 post 方法工作,然后让它发布到数据库。但是如何做到这一点呢?

【问题讨论】:

  • 我相信对 HTML 表单帖子的工作有一些基本的了解。一篇不错的,如果有点旧,Microsoft 文章包含所需的所有步骤。 docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/… 否则,如果您可以发布您的控制器和 HTML 表单以获得特定答案,将会很有帮助,
  • 是的,这是我作为参考寻求帮助的文章。它一直没有完全帮助,我应该发布我到目前为止的内容,也许它会让你更好地了解我正在努力完成的工作@tlbignerd
  • 为了可读性而格式化。
  • 哦,谢谢@Nic3500,即使我尽了最大努力,当我找到答案时,你也很高兴给我一个“-1”。谢谢!
  • @tlbignerd 谢谢先生!您的链接确实对此有所帮助。

标签: post asp.net-web-api postman webmethod html-post


【解决方案1】:

大家好,我能回答我自己的问题,只是为了未来的观众,这就是我所做的

带有ajax的HTML表单:

<form method="post" action="Api/Values/Complex" enctype="application/x-www-form-urlencoded">
        <select id="thisSelect">
            <option value="sp18br"> sp18br</option>
            <option value="sp18cl"> sp18cl</option>
        </select>
        <br />
        <br />
        <input type="submit" value="submit" />




    </form>

    <script>
        $("form").on("submit", function () {
            var post = $.post("api/values/complex", { "": $("#thisSelect").val() });
            return false;
        });
    </script>

ValuesController.cs:

  [HttpPost]
        [ActionName("Complex")]
        public HttpResponseMessage Post([FromBody]string value)
        {
            if (value == "sp18br")
            {
                string cadena = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\\Users\\azib\\Desktop\\dfb; Extended Properties = dBASE IV; User ID = Admin; Password =";
                string select = "Select * from sp18br ";
                DataSet myDataSet = new DataSet();
                OleDbConnection con = new OleDbConnection(cadena);
                OleDbCommand myAccessCommand = new OleDbCommand(select, con);
                OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
                con.Open();


                DataTable dt = new DataTable();
                myDataAdapter.Fill(dt);
                con.Close();


                string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
                using (SqlConnection con1 = new SqlConnection(cs))
                {
                    con1.Open();

                    foreach (DataRow dr1 in dt.Rows)
                    {

                        SqlCommand cmd = new SqlCommand("sp_InsertLeafPickup", con1);
                        cmd.CommandType = CommandType.StoredProcedure;

                        //Insert stored procedure

                        cmd.Parameters.AddWithValue("@Address", dr1["PCOMBINED"]);
                        //cmd.Parameters.AddWithValue("@SeasonType", dr1["PSSSTREET"]);
                        cmd.Parameters.AddWithValue("@NextPickupdate", dr1["ZST"]);

                        cmd.ExecuteNonQuery();

                    }
                    con.Close();
                    con1.Close();
                }
                return Request.CreateResponse(HttpStatusCode.OK, "Ok");
            }
            if (value == "sp18cl")
            {

                string cadena1 = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\\Users\\azib\\Desktop\\dfb; Extended Properties = dBASE IV; User ID = Admin; Password =";
                string select1 = "Select * from sp18cl ";
                DataSet myDataSet1 = new DataSet();
                OleDbConnection con2 = new OleDbConnection(cadena1);
                OleDbCommand myAccessCommand1 = new OleDbCommand(select1, con2);
                OleDbDataAdapter myDataAdapter1 = new OleDbDataAdapter(myAccessCommand1);
                con2.Open();


                DataTable dt1 = new DataTable();
                myDataAdapter1.Fill(dt1);
                con2.Close();


                string cs1 = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
                using (SqlConnection con3 = new SqlConnection(cs1))
                {
                    con3.Open();

                    foreach (DataRow dr1 in dt1.Rows)
                    {

                        SqlCommand cmd = new SqlCommand("sp_InsertLeafPickup", con3);
                        cmd.CommandType = CommandType.StoredProcedure;

                        //Insert stored procedure

                        cmd.Parameters.AddWithValue("@Address", dr1["PCOMBINED"]);
                        //  cmd.Parameters.AddWithValue("@SeasonType", dr1["PSSSTREET"]);
                        cmd.Parameters.AddWithValue("@NextPickupdate", dr1["ZST"]);

                        cmd.ExecuteNonQuery();

                    }
                    con2.Close();
                    con3.Close();
                }


            }
            return Request.CreateResponse(HttpStatusCode.OK, "Ok");
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 2012-02-06
    • 2017-12-18
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    相关资源
    最近更新 更多