【发布时间】:2021-03-24 12:56:16
【问题描述】:
我可能遗漏了一些非常明显的东西,但我想做的只是有一个简单的表单,允许它发布,更改其中一个字段,当它返回时它应该向我显示更改后的值。很简单吧?
模型如下所示:
public class TestModel
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}
控制器动作:
public IActionResult Test()
{
return View(new TestModel());
}
[HttpPost]
public IActionResult Test(TestModel model)
{
model.Field1 = "changed"; // this seems to be ignored
return View(model);
}
观点:
@model AspNetCoreTest1.Models.TestModel
<form method="post" asp-controller="Home" asp-action="Test">
<input asp-for="Field1" />
<br />
<input asp-for="Field2" />
<br />
<button type="submit">Send</button>
</form>
我可以看到表单并返回(我可以看到我在模型中输入的值),但是在 POST 之后表单仍然显示我输入的值。它不会在第一个字段中显示 changed。
(我使用的是 ASP.NET Core 1.1)
想法?
【问题讨论】:
-
尝试从
HttpGet中删除return View(new TestModel());.. 保留return View()。 -
刚试过;一样的
-
你能在视图中放置一个调试器来查看你是否得到更新的模型值吗?
-
哈!我不知道您可以在 HTML 中设置断点,很好 :) 是的,我刚刚这样做了,Field1 显示为“已更改”。好奇怪……
标签: asp.net-core asp.net-core-mvc