gpt4 book ai didi

asp.net-core - ASP.NET Core-发布后更改表单值

转载 作者:行者123 更新时间:2023-12-04 11:01:56 27 4
gpt4 key购买 nike

我可能会遗漏一些非常明显的东西,但是我想要做的就是拥有一个简单的表单,允许它进行POST,更改其中一个字段,当它返回时,应该向我显示更改后的值。简单吧?

该模型如下所示:

public class TestModel
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}

Controller Action :
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)

有什么想法吗?

最佳答案

我们无法直接对传递的模型进行更改,并希望它会反射(reflect)在UI中。您的问题的解决方案如下。
如果您使用的是C#6.0,则将以下一行代码model.Field1 = "changed";替换为以下代码:

ModelState.FirstOrDefault(x => x.Key == nameof(model.Field1)).Value.RawValue = "changed";
对于早期的C#版本:
ModelState.FirstOrDefault(x => x.Key == "Field1")).Value.RawValue = "changed";

关于asp.net-core - ASP.NET Core-发布后更改表单值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41775756/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com