Day02 - 纯 Html - 简单型别 + 字串

简单型别 + 字串

简单型别定义


Case01 - 简单型别

  • Controller

    预期 post 时,只读取 id 这个参数的资料

    [HttpGet]
    public IActionResult Case01()
    {
        return View();
    }
    
    [HttpPost]
    public IActionResult Case01([FromForm]int id)
    {
        return Ok(id);
    }
    

    注:上面 Post Action 的参数加上 FromForm Attribute,代表会以 Form-Data 格式解析 request body 的内容,并给定至对应的引数上 !

  • View

    给定 html 控制项 name 为 id

    <form action="/Day01/Case01" method="post">
      <p>
        <label>编号:</label>
        <input type="number" step="1" min="0" name="id" />
      </p>
      <p>
        <button type="submit">送出</button>
      </p>
    </form>
    

执行网站後,於该页面输入 1 後,按下送出来 submit form

Image

从 DevTools Network 可以看到发出的 Request 记录
以 http post 发出 request 至 /Day01/Case01

Image

Request Header content-type 为 applicaiton/x-www-form-urlencoded

Image

Request Body 为 id:1
注:这是经过 DevTools parse 过的格式,实际上的格式是 id=1,可以按下 view source 来确认 !

Image

转页後,看出後端确实收到对应的资料,并显示出来 !

这边主要是说:
当 submit form 时,会读取 form 内控制项的 name,并放到 request body 内,送到後端。
Asp.Net Core 预设的 Model Binding 会以参数名称进行解析 !


Case02 - 字串

  • Controller

    跟上个 Case 相比,post Action 做了以下调整:

    • 参数多了一个 name
    • 以 json 格式回传所传入的参数
    [HttpGet]
    public IActionResult Case02()
    {
        return View();
    }
    
    [HttpPost]
    public IActionResult Case02([FromForm]int id, [FromForm]string name)
    {
        return Ok(new { id, name });
    }
    
  • View

    在 form tag 新增 name 为 name 的 html 控制项

    <form action="/Day01/Case02" method="post">
      <p>
        <label>编号:</label>
        <input type="number" step="1" min="0" name="id" />
      </p>
      <p>
        <label>姓名:</label>
        <input type="text" name="name" />
      </p>
      <p>
        <button type="submit">送出</button>
      </p>
    </form>
    

执行网站後,於该页面输入资料,按下送出

从 DevTools 看出 parsed 及 source 的 request body

以及转页後,看出後端确实收到对应的资料,并显示出来 !

Image

注:关於 post back 後的 json 格式,其大小写为 camel case,是预设的行为。如果需要改成 pascal case,可参考这个做法来调整。

Image

再次强调:当 submit form 时,会读取 form 内控制项的 name,并放到 request body 内,送到目的地去 !


这篇先到这里,下一篇来看复杂型别 object 的 model binding


<<:  AI ninja project [day 2] OCR

>>:  【D1】前言与规划

Day11. 从日常看到Blue Prism的窝心-BP合并两张报表

当过主管或小组长的人,多少都遇过的经验, 收集大家的日报Excel档资料时,以往都是一个一个档案打开...

RestTemplate实作(一)(Day11)

在串接API之前我们还有一个重要的设定要做,我们必须先汇出证交所网站的SSL证书,并加入到JAVA的...

day19 Kotlin coroutine flow with liveData in MVVM

恩,标题不知道怎麽下成中文 在之前的范例里,示范了如何用coroutine做一次性的网路请求,并交结...

视觉化KBARS日K(1)-java controller

1分K视觉化的功能昨天已经完成, 今天要尝试将1分K组成日K做展示, 我会示范一个土法炼钢的方式, ...

[区块链&DAPP介绍 Day17] Solidity 教学 - using-for

今天来延续一点昨天聊到的 libraries 的另一个应用 using-for using-for ...