forms - 如何实时显示/隐藏元素(Blazor)?

标签 forms blazor

我有一个图像,我想在用户填写所有文本字段后显示。
我试过使用 disabled属性,但这似乎不起作用。还有其他见解吗?
这是我当前的代码:

<EditForm EditContext="@EditContext" style="max-width:800px;" onkeydown="javascript: DisableEnterKey();">
            <FluentValidator />

            <img src="images/approval-16-grey.ico" alt="Image" disabled="@OkayDisabled">


            <p class="statp">How many families and/or individuals are living on your land?</p><br />

            <label class="statlabel" for="amountOfFamilies">Amount of families:</label><br />
            <InputNumber id="fams" for="indivNum" class="input" @bind-Value="@familyData.IndividualAmount" onwheel="this.blur()" placeholder="Families..." autofocus />
            <ValidationMessage For="() => familyData.IndividualAmount" />

            <br /><hr class="statHR" />

            <label class="statlabel" for="amountOfIndividuals">Amount of single individuals: </label><br />
            <InputNumber id="individuals" for="famNum" class="input" @bind-Value="@familyData.FamilyAmount" onwheel="this.blur()" placeholder="Individuals..."/>
            <ValidationMessage For="() => familyData.FamilyAmount" />

            <br /><hr class="statHR" />

            <label class="statlabel" for="names"> Please enter all of the names here:</label><br />
            <InputTextArea id="names" class="textArea" rows="4" cols="18" @bind-Value="@PersonName" placeholder="Names of all individuals..." />
            <ValidationMessage For="() => familyData.PersonName" />


        </EditForm>

        </div>
    </ul>


    @code 
    {
        private EditContext? EditContext;
        public FamilyData Model = new FamilyData();

        protected string OkayDisabled { get; set; } = "disabled";

        protected override void OnInitialized()
        {
            EditContext = new EditContext(Model);
            EditContext.OnFieldChanged += EditContext_OnFieldChanged;

            base.OnInitialized();
        }

        protected override void OnAfterRender(bool firstRender)
        {
            base.OnAfterRender(firstRender);

            SetOkDisabledStatus();
        }

        private void EditContext_OnFieldChanged(object? sender, FieldChangedEventArgs e)
        {
            SetOkDisabledStatus();
        }

        private void SetOkDisabledStatus()
        {
            if(EditContext.Validate())
            {
                OkayDisabled = null;
            }
            else
            {
                OkayDisabled = "disabled";
            }
        }
    }

最佳答案

hidden html 属性也可以隐藏元素。<p hidden>This paragraph should be hidden.</p>绑定(bind)到模型:

 <p hidden="@HideLabel">I am Hidden When HideLabel == true</p>

 <p hidden="@(!HideLabel)">I am Hidden when Hidelabel == false</p>

 
 <button @onclick="@Toggle">Show/Hide</button>

 @code {
      private bool HideLabel   {get;set;} = false;
      private void Toggle()
      {
         HideLabel =   !HideLabel;
      }      
 } 

关于forms - 如何实时显示/隐藏元素(Blazor)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63693734/

相关文章:

c# - Blazor Bootstrap 5模态: how to not bind a property to value?

c# - 不要在 Blazor Server 应用程序中包含特定配置的所有 @page

django - 是否可以在 Django 中的表单上将模型帮助文本显示为标题属性?

python - Django 表单的 HTTP 响应问题

java - Spring MVC Controller 是否查找 ID 或名称?

laravel - 如何在资源 Controller 的更新路由中传递id?

c# - GroupBy 与 EF Core 6.0 和 SQL Server

forms - Web2py 表单字段选项

c# - 如何使用相同的键向 StringValues 数组添加新值,从而修改我的 Uri?

c# - 如何在不使用十字按钮的情况下关闭 Blazor 中的弹出窗口?