页面模型 Bool 总是 returns false

Page Model Bool always returns false

我正在处理一个 razor 页面项目,但在单击按钮时更改页面模型的值时遇到了问题。它应该在每次单击时切换 IsCreatingCompany 的值。这是我的代码:

            <div class="col-6 text-end">
                <form asp-page-handler="ToggleCreateCompany" method="post">
                    <button class="btn btn-primary" name="CreateCompanyResult" value=@Model.IsCreatingCompany>Add Company</button>
                </form>
            </div>
            @if (Model.IsCreatingCompany)
            {
                <label>is true</label>
            }
            else
            {
                <label>is false</label>
            }
        public IActionResult OnPostToggleCreateCompany(bool CreateCompanyResult)
        {
            IsCreatingCompany = !CreateCompanyResult;
            return Page();
        }

我感觉我在某处犯了一个小错误,或者误解了什么。我尝试过的一些事情:

  1. 交换名称和值字段顺序(我在某处读到可能有用)。
  2. 将 OnPost 方法更改为 void return。
  3. 使输入参数的名称与 IsCreatingCompany 的字段名称匹配。

我验证过的东西是有效的:

  1. 点击按钮确实进入 OnPostToggleCreateCompany 方法。
  2. 首次加载页面并调用 OnGet 时, 值初始化为 false。另外,我没有在 构造函数。
  3. 第一次点击后,值更新为真,但是 我模型中的值仍然是错误的。
  4. 所有额外的点击在页面上留下“true”,在模型中留下“false”,而不是 切换值

如果我需要 post 任何额外的代码,请告诉我,感谢您的帮助!!!

尝试用@Model.IsCreatingCompany.ToString()代替@Model.IsCreatingCompany,这样传给handler的数据就会正确,这里有一个demo:

cshtml:

<div class="col-6 text-end">
                <form asp-page-handler="ToggleCreateCompany" method="post">
                    <button class="btn btn-primary" name="CreateCompanyResult" value=@Model.IsCreatingCompany.ToString()>Add Company</button>
                </form>
            </div>
            @if (Model.IsCreatingCompany)
            {
                <label>is true</label>
            }
            else
            {
                <label>is false</label>
            }