【问题标题】:ASP.Net Core How to set value to inputASP.Net Core 如何设置输入值
【发布时间】:2022-01-14 19:57:57
【问题描述】:

我对如何在文本表单中放置值感到困惑。

我创建了一个简单的表单。

test.cshtml

@@Model.Name is @Model.Name

<form method=post>
    Name:<input asp-for="Name" />
    <button asp-page="test">Submit</button>
</form>

test.cshtml.cs 是

[BindProperty(SupportsGet = true)]
public string Name { get; set; }

public IActionResult OnGet()
{
    Name = "value-get";
    return Page();
}

public IActionResult OnPost()
{
    Name = "value-post";
    return Page();
}

首先得到的结果是

@Model.Name is value-get
Name:[value-get] [submit]

image

好的。这可以。名称现在是“value-get”。

我将文本框值更改为 123。

@Model.Name is value-get
Name:[123][submit]

image

然后发布它。

@Model.Name 现在是“价值发布”。因为我在 OnPost 更改它。但是文本字段仍然是 123。

@Model.Name is value-post
Name:[123][submit]

image

我在 OnGet 和 OnPost 做同样的事情。我可以通过 OnGet 设置文本字段,但我不能通过 OnPost 设置它。我想知道为什么会这样,并告诉我结构。

【问题讨论】:

    标签: asp.net-core razor-pages


    【解决方案1】:

    在客户端绑定数据时,会先从ModelState中获取值,在Model之前可以尝试在Post方法中添加ModelState.Clear();

    public IActionResult OnPost()
            {
                ModelState.Clear();
                Name = "value-post";
                return Page();
            }
    

    结果:

    【讨论】:

    • 非常感谢!我不知道 ModalState。我的疑惑已经解决了!
    • 如果我的回答有帮助,你能接受吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    相关资源
    最近更新 更多