ASP.Net核心如何设置输入值

ASP.Net Core How to set value to input

我对如何以文本形式放置值感到困惑。

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

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

然后post它。

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

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

image

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

在客户端绑定数据时,它会先从ModelState中获取值,然后再从Model中获取。您可以尝试将ModelState.Clear();添加到Post方法中。

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

结果: