预期 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 的内容,并给定至对应的引数上 !
给定 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
从 DevTools Network 可以看到发出的 Request 记录
以 http post 发出 request 至 /Day01/Case01
Request Header content-type 为 applicaiton/x-www-form-urlencoded
Request Body 为 id:1
注:这是经过 DevTools parse 过的格式,实际上的格式是 id=1
,可以按下 view source 来确认 !
转页後,看出後端确实收到对应的资料,并显示出来 !
这边主要是说:
当 submit form 时,会读取 form 内控制项的 name,并放到 request body 内,送到後端。
Asp.Net Core 预设的 Model Binding 会以参数名称进行解析 !
跟上个 Case 相比,post Action 做了以下调整:
[HttpGet]
public IActionResult Case02()
{
return View();
}
[HttpPost]
public IActionResult Case02([FromForm]int id, [FromForm]string name)
{
return Ok(new { id, name });
}
在 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
以及转页後,看出後端确实收到对应的资料,并显示出来 !
注:关於 post back 後的 json 格式,其大小写为 camel case,是预设的行为。如果需要改成 pascal case,可参考这个做法来调整。
再次强调:当 submit form 时,会读取 form 内控制项的 name,并放到 request body 内,送到目的地去 !
这篇先到这里,下一篇来看复杂型别 object
的 model binding
<<: AI ninja project [day 2] OCR
当过主管或小组长的人,多少都遇过的经验, 收集大家的日报Excel档资料时,以往都是一个一个档案打开...
在串接API之前我们还有一个重要的设定要做,我们必须先汇出证交所网站的SSL证书,并加入到JAVA的...
恩,标题不知道怎麽下成中文 在之前的范例里,示范了如何用coroutine做一次性的网路请求,并交结...
1分K视觉化的功能昨天已经完成, 今天要尝试将1分K组成日K做展示, 我会示范一个土法炼钢的方式, ...
今天来延续一点昨天聊到的 libraries 的另一个应用 using-for using-for ...