加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core – ASP.NET核心 – 在帖子后更改表单值

发布时间:2020-12-16 07:20:39 所属栏目:asp.Net 来源:网络整理
导读:我可能错过了一些非常明显的东西,但我想要做的就是有一个简单的表单,允许它POST,更改其中一个字段,当它返回时它应该显示更改的值.简单吧? 该模型如下所示: public class TestModel{ public string Field1 { get; set; } public string Field2 { get; set;
我可能错过了一些非常明显的东西,但我想要做的就是有一个简单的表单,允许它POST,更改其中一个字段,当它返回时它应该显示更改的值.简单吧?

该模型如下所示:

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(我可以看到我在模型中输入的值),但在POST后,表单仍然显示我输入的值.它没有显示第一个字段的更改.

(我使用的是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";

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读