【发布时间】:2021-11-13 17:34:53
【问题描述】:
我的控制器没有从我的视图中的表单接收数据。
我之前在其他模型上使用过基本完全相同的代码,并且它工作得非常好。
有人可以解释为什么这不起作用吗?
控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult ChangeWiFiNetwork(Models.Settings.NetworkSettings model)
{
Logger.LogInformation("SSID:", model.SSID);
Logger.LogInformation("PASS:", model.Password);
return RedirectToAction("Index");
}
查看:
@model Webserver.Models.Settings.Settings
<h1>Settings</h1>
<div class="row">
<div class="col-6">
<form asp-action="ChangeWiFiNetwork">
<div class="form-group">
<label asp-for="Network.SSID" class="control-label"></label>
<input asp-for="Network.SSID" class="form-control" />
<span asp-validation-for="Network.SSID" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Network.Password" class="control-label"></label>
<input asp-for="Network.Password" class="form-control" />
<span asp-validation-for="Network.Password" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Save" class="btn btn-primary" />
</div>
</form>
</div>
</div>
型号:
namespace Webserver.Models.Settings
{
public class Settings
{
public NetworkSettings Network { get; set; }
}
}
namespace Webserver.Models.Settings
{
public class NetworkSettings
{
public string SSID { get; set; }
public string Password { get; set; }
}
}
输出
SSID:
PASS:
在调试模式下都显示为 null。
Firefox Network-Analysis 显示 Network.SSID 和 Network.Password 正在 Form-Data 中发送。
我正在使用 .Net 5
谢谢
【问题讨论】:
-
提交是否命中控制器动作?你能看到 Logger.LogInformation("SSID:", model.SSID);记录?什么是价值模型.SSID?
-
是的。我在控制台中得到输出“SSID:”。并且带有断点模型。SSID 为空。
标签: asp.net asp.net-mvc asp.net-core .net-core