c# - 读取子组件值的最佳实践
问题描述
我创建了一个 Razor 组件,一个简单的输入类型,如下所示:
@using ComponentPackage.Common
<input type="text" @bind="InputValue" />
@code {
[Parameter]
public EventCallback<string> ValueChanged { get; set; }
private string inputValue;
public string InputValue
{
get => inputValue;
set
{
inputValue = value;
ValueChanged.InvokeAsync(value);
}
}
}
然后我在 Razor 页面上设置这样的子组件:
@page "/newpage"
@using ComponentPackage.Common
<ComponentPackage.Components.TextBox ValueChanged="OnValueChanged"></ComponentPackage.Components.TextBox>
<input type="button" @onclick="TestContent" value="Test" />
<br /><br />
You have entered : @ReturnValue
@code {
[Parameter]
public string ReturnValue { get; set; }
private void TestContent()
{
// Here I want to get the value from the component
}
public void OnValueChanged(string returnValue)
{
ReturnValue = returnValue;
}
}
从页面中,我将组件事件连接到 OnValueChanged。这有效,只要我离开该字段,ReturnValue 属性就会更新。
所以问题是:当我点击页面上的按钮时,如何读取文本框中的值?换句话说,我不希望在离开文本框时设置 ReturnValue。我曾尝试将 bind-InputValue 用于页面上的属性,但它始终为空。
解决方案
我认为这就是您所需要的:组件中的双向数据绑定 以下代码,完整且有效的是您想要的...复制,粘贴并运行...
以下示例展示了如何在父组件与其子组件之间执行双向数据绑定。在这两个组件中的每一个都是一个文本框控件。当您在父组件的文本框中键入文本时,子组件文本框中的文本会更改以反映父组件中所做的更改,反之亦然...
ChildComponent.razor
<div style="border:solid 1px red">
<h2>Child Component</h2>
<input type="text" @bind="Text" @bind:event="oninput" />
</div>
@code {
private string text { get; set; }
[Parameter]
public string Text
{
get { return text; }
set
{
if (text != value) {
text = value;
if (TextChanged.HasDelegate)
{
TextChanged.InvokeAsync(value);
}
}
}
}
[Parameter]
public EventCallback<string> TextChanged { get; set; }
}
父组件.razor
@page "/ParentComponent"
<h1>Parent Component</h1>
<input type="text" @bind="Text" @bind:event="oninput" />
<p></p>
<ChildComponent @bind-Text="Text" />
@code {
[Parameter]
public string Text { get; set; } = "Hello Blazor";
}
将此内容添加到 Shared/NavMenu.razor,并测试代码:
<li class="nav-item px-3">
<NavLink class="nav-link" href="ParentComponent">
<span class="oi oi-plus" aria-hidden="true"></span> ParentComponent
</NavLink>
</li>
祝你好运...如果有不清楚的地方,请随时问...
推荐阅读
- c# - C#以int数组为索引过滤for循环的更快方法?
- java - 验证上传的 jpg 和 png 文件并保存到静态文件夹
- javascript - 使 SQLite 错误具体化,而不仅仅是 express/node.js 中的 SQLITE_ERROR
- python - 如何从数据框动态生成 excel 并在 Python 中作为电子邮件发送?
- javascript - 如何使用javascript在嵌套对象数组中按属性分配值
- asp.net - 在 MVC5 的列表中显示 Ping 状态
- angular - Angular - 在父容器内打开底部表 (MatBottomSheet)
- c# - NuGet 中传递包引用的最佳实践
- javascript - Lambda函数返回具有不同内存位置的函数?
- php - 从 PHP 中的嵌套数组中删除元素