Blazor 模板化组件以呈现具有不同上下文的表单
Blazor templated component to render a form with different context
我有一系列文本框可以从用户那里获取 phone 号码和电子邮件,我将以多种形式使用它们但具有不同的上下文,例如客户、员工、供应商,所以我想知道是否可以创建模板化组件以重用代码。
<div class="form-group row">
<label for="phone1" class="col-sm-3">Phone 1: </label>
<InputText id="phone1" @bind-Value="@Client.phone1"></InputText>
</div>
如何更改上下文并像这样调用组件
<Phones TValue=Employee />
<Phones TValue=Client />
<Phones TValue=Supplier />
所有这些 类 都具有相同的 phone 和电子邮件属性。
谢谢
我不太明白你为什么要这样做。如果“Employee”、“Client”和“Supplier”都派生自相同的 base-class(它们应该是),那么您根本不需要在标记中声明 TValue。只要有一个[Parameter] public BasePersonModel Person {get; set; }
然后在您的组件的标记中,您可以在 Person 对象上使用任何您想要的逻辑,例如:
@if (Person is Employee) { Do something }
我有一系列文本框可以从用户那里获取 phone 号码和电子邮件,我将以多种形式使用它们但具有不同的上下文,例如客户、员工、供应商,所以我想知道是否可以创建模板化组件以重用代码。
<div class="form-group row">
<label for="phone1" class="col-sm-3">Phone 1: </label>
<InputText id="phone1" @bind-Value="@Client.phone1"></InputText>
</div>
如何更改上下文并像这样调用组件
<Phones TValue=Employee />
<Phones TValue=Client />
<Phones TValue=Supplier />
所有这些 类 都具有相同的 phone 和电子邮件属性。
谢谢
我不太明白你为什么要这样做。如果“Employee”、“Client”和“Supplier”都派生自相同的 base-class(它们应该是),那么您根本不需要在标记中声明 TValue。只要有一个[Parameter] public BasePersonModel Person {get; set; }
然后在您的组件的标记中,您可以在 Person 对象上使用任何您想要的逻辑,例如:
@if (Person is Employee) { Do something }