ASP.Net Core 如何设置输入值

Posted

技术标签:

【中文标题】ASP.Net Core 如何设置输入值【英文标题】:ASP.Net Core How to set value to input 【发布时间】: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 设置它。我想知道为什么会这样,并告诉我结构。

【问题讨论】:

【参考方案1】:

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

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

结果:

【讨论】:

非常感谢!我不知道 ModalState。我的疑惑已经解决了! 如果我的回答有帮助,你能接受吗?谢谢。

以上是关于ASP.Net Core 如何设置输入值的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core Web API 身份验证

ASP.NET Core ---- 系列文章

ASP.NET Core 6框架揭秘实例演示[05]:依赖注入基本编程模式

在 ASP.NET Core 应用程序中使用多个 HttpClient 对象

.NET Core(或 ASP.NET 5)中是不是有 MEF 的替代品

ASP.NET CORE MVC 选择标签助手 - 如何在不使用 ModelView 的情况下设置选定值