如何使 HTML 表单提交

Posted

技术标签:

【中文标题】如何使 HTML 表单提交【英文标题】:how to make HTML form submit 【发布时间】:2021-11-27 14:19:57 【问题描述】:

我正在使用 MVC 框架在 .NET 中构建一个 Web 应用程序。从来没有这样做过,而且我对这种软件开发还很陌生。

我正在创建一个 html 表单,其中包含一个输入字段。据我了解,默认的“提交”将是返回按钮。我试图让它向控制器发送一个 ID,但它不会在“?”之后解析任何内容。表格位于顶部的标题下方。

整页:

@model Web_App.Models.CAN_Waterium_Frame
@using System.Collections.Generic;
@
    ViewData["Title"] = "Data";


<h2>Raw Data</h2>

<form id="searchBar" action="/Data/RawData" method="GET">
<input type="text" placeholder="Search id.." id="id">
</form>

<ul>
    @
        var list = (List<CAN_Waterium_Frame>)ViewData["data"];
    
    @foreach (var item in @list)
    
        System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
        dtDateTime = dtDateTime.AddSeconds(item.time).ToLocalTime();
        <li>ID: @item.id
                data length: @item.dlc
                raw data: @System.Text.Json.JsonSerializer.Serialize(item.data) 
                time: @dtDateTime.ToString("dddd, dd MMMM yyyy HH:mm:ss") </li>
    

</ul>

现在,谁能帮我理解我在这里做错了什么以及如何解决它?我的理解是,在点击返回后,这个表单应该请求:

https://url/Data/RawData?id=x

但确实如此:

https://url/Data/RawData?

当我看到 URL 更改时,它确实记录了我点击返回按钮。请帮助我理解。

【问题讨论】:

使用name="id" 而不是id="id" 【参考方案1】:

您的input 元素没有name 属性:

<input type="text" placeholder="Search id.." id="id">

浏览器使用该属性为与表单数据一起提交的键/值对定义“键”。所以你有一个值,但没有键。添加您的密钥:

<input type="text" placeholder="Search id.." id="id" name="id">

【讨论】:

大人,我是不是觉得自己很蠢。谢谢老兄!【参考方案2】:

您应该指定控件的name,以便与form 一起发送。

<input type="text" placeholder="Search id.." name="id" />

发件人:https://www.w3schools.com/tags/att_form_method.asp

定义和用法

[...]

表单数据可以作为 URL 变量(使用 method="get")或作为 HTTP post 事务(使用 method="post")发送。

GET 说明:

将表单数据附加到 name/value 对中的 URL

[...]

【讨论】:

【参考方案3】:

需要在表单中添加提交类型按钮如下

<input type=“submit” value=“Submit” />

【讨论】:

【参考方案4】:

表单将根据里面的字段名称提交

例如

<!DOCTYPE html>
<html>
  <head>
    <title>Parcel Sandbox</title>
    <meta charset="UTF-8" />
  </head>

  <body>
    <div id="app">
      <form id="searchBar" action="/" method="GET">
        <input
          name="id"
          value="some value"
          type="text"
          placeholder="Search id.."
          id="id"
        />
      </form>
    </div>
  </body>
</html>

进入后,您应该会在 URL 处看到 /?id=some+value 这个值

你没有得到任何东西,因为你错过了输入的名称属性

【讨论】:

以上是关于如何使 HTML 表单提交的主要内容,如果未能解决你的问题,请参考以下文章

asp中如何使表单提交数据后不跳转到该页面?

在DW中制作一个表单后如何使表单内容提交到指定页面?

如何使“div”按钮提交其所在的表单?

按下按钮后如何使“提交”表单从 Ajax 工作

Django - 如何使日期选择器在更改时提交表单

提交后如何使表单域为空