Asp.net-Core
ASP.NET Core - 發布後更改表單值
我可能遺漏了一些非常明顯的東西,但我想做的只是有一個簡單的表單,允許它發布,更改其中一個欄位,當它返回時它應該向我顯示更改後的值。很簡單,對吧?
該模型如下所示:
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)
想法?
我們不能直接對傳遞的模型進行更改,希望它能反映在 UI 中。您的問題的解決方案如下。
model.Field1 = "changed";如果您使用的是 C# 6.0,請將此程式碼行替換為以下程式碼:ModelState.FirstOrDefault(x => x.Key == nameof(model.Field1)).Value.RawValue = "changed";對於早期的 C# 版本:
ModelState.FirstOrDefault(x => x.Key == "Field1")).Value.RawValue = "changed";
你可以打電話:
ModelState.Clear(); return View(YourModel);這將清除所有 ModelState 值