【问题标题】:how to make HTML form submit如何使 HTML 表单提交
【发布时间】: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"

标签: c# html asp.net .net


【解决方案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 这个值

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

      【讨论】:

        猜你喜欢
        • 2022-11-02
        • 2016-01-09
        • 2013-03-05
        • 1970-01-01
        • 2011-03-22
        • 1970-01-01
        • 2015-02-14
        • 2013-05-22
        • 2013-04-15
        相关资源
        最近更新 更多