c# - 如何在 blazor 中强制重新渲染 RenderFragment?
问题描述
问题
我在 Blazor 中做一个模态组件来编辑网格的记录。如果用户单击我的按钮,我想用当前选择的记录呈现它。
我试过什么
ViewProvider
我用一个函数调用了一个辅助类,Edit(T current)
其中T
一个代表我的记录的类。编辑函数返回RenderFragment
然后,我将其放置@ViewProvider.Edit(Current)
在Grid.razor
我打算显示模态窗口的位置。每次网格更改其状态时都会调用它。但是,模式将仅弹出一次,并且在单击按钮后不会以新记录重新呈现。我想 Blazor 在它的树内部看到我的模态并且认为没有任何改变,因为视图是相同的(尽管视图中的数据不同)。
问题
每次单击按钮时,如何强制我的模态显示当前记录?或者如何更改 RenderFragment 的一部分以更新视图中的数据?
编辑:
这是代码:
网格剃须刀
@if (EditedCell.HasValue) {
@ViewProvider.Edit(Current, "Edit")
}
ViewProvider.cs
public override RenderFragment Edit(T current, string modalName)
{
RenderFragment editView = (builder) =>
{
foreach (var property in typeof(T).GetProperties())
{
builder.OpenElement(0, "div");
builder.AddAttribute(1, "class", "mt10 mb10");
builder.OpenElement(2, "label");
builder.AddContent(3, property.Name);
builder.CloseElement();
builder.OpenComponent<InputBox>(4);
builder.AddAttribute(5, "Type", InputBox.SetInputType(property.PropertyType));
builder.AddAttribute(6, "Value", property.GetValue(current).ToString());
builder.AddAttribute(7, "Class", "right");
builder.CloseComponent();
builder.CloseElement();
}
builder.OpenElement(8, "button");
builder.AddAttribute(9, "class", "primary");
builder.AddAttribute(10, "onclick", EventCallback.Factory.Create<MouseEventArgs>(this, s => { EditOnClick(current, s); }));
builder.AddContent(11, "Zapisz");
builder.CloseElement();
};
return AddModal(editView, modalName);
}
public RenderFragment AddModal(RenderFragment ChildContent, string modalName)
{
RenderFragment modalFragment = (builder) =>
{
builder.OpenComponent<Modal>(0);
builder.AddAttribute(1, "Name", modalName);
builder.AddAttribute(2, "ChildContent", ChildContent);
builder.CloseComponent();
};
return modalFragment;
}
解决方案
推荐阅读
- java - 在 itemListener 中确定 JCheckBox 的标识
- css - CSS flex:防止孙子溢出(即强制滚动)
- python - 环境/身份验证可能存在问题 - BigQuery 管理员:{invalid_grant, Invalid JWT Signature}
- php - JQuery 未检测到数据属性
- python - 命令行参数在 python 中不起作用
- numpy - SIice 基于间隔的 numpy 数组?
- protocol-buffers - 在 Charles 中重写协议缓冲区响应。Content-Type 标头中未指定“desc”参数
- sql-server - 使用 SqlBulkCopy 在传输前修改列内容
- python - 如何在python中创建一个动态二维数组
- javascript - 倒计时仅在页面刷新时停止