- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Blazor 中开发一个组件,我希望它从 C# 类中获取所有功能(文本、EventCallbacks 等)。像这样:
Blazor 组件(代码隐藏):
public partial class Card : ComponentBase
{
[Parameter] public CardData CardData { get; set; }
protected async Task OnActionFiredEvent(EventCallback<object> eventCallback, object itemId)
{
if (eventCallback.HasDelegate)
await CardData.CardTitleOnClickAction.InvokeAsync(itemId);
}
}
Blazor 组件(Razor):
<!-- Card image -->
<div class="view view-cascade overlay">
<a>
<div class="mask rgba-white-slight waves-effect waves-light"></div>
</a>
</div>
<!-- Card content -->
<div class="card-body card-body-cascade text-center">
<!-- Title -->
<h4 class="card-title">
<a class="waves-effect waves-light" @onclick="@(() => OnActionFiredEvent(CardData.CardTitleOnClickAction, CardData.CardItemId))">
<strong>@CardData.CardTitle</strong>
</a>
</h4>
<!-- Subtitle -->
@if (!string.IsNullOrEmpty(CardData.CardSubTitle))
{
<h6 class="font-weight-bold indigo-text py-2">@CardData.CardSubTitle</h6>
}
<!-- Text -->
@if (!string.IsNullOrEmpty(CardData.CardText))
{
<p class="card-text">
@CardData.CardText
</p>
}
</div>
<!-- Card footer -->
<div class="card-footer text-muted text-center">
@CardData.CardFooter
</div>
汽车数据类:
public class CardData
{
public object CardItemId { get; set; }
public string CardTitle { get; set; }
public string CardSubTitle { get; set; }
public string CardText { get; set; }
public string CardFooter { get; set; }
public EventCallback<object> CardTitleOnClickAction { get; set; }
}
使用:
<Card CardData="@(new CardData() {
CardTitle = "TextTitle",
CardTitleOnClickAction = EventCallBackMethod,
CardSubTitle = "TextSubTitle",
CardText = "Text"})" />
问题是在将 EventCallBack 作为类属性传递时出现以下错误:无法将方法组“EventCallBackMethod”转换为非委托(delegate)类型“EventCallback”。您是否打算调用该方法?
失败的方法本身是这样的:
protected async Task EventCallBackMethod()
{
await DoSomething();
}
知道如何解决这个问题吗?
最佳答案
正如 Brian Parker 所提到的,您需要在回调中有一个类型。如果您不想传递一个值,您可以传递 null
,例如;
MyComponent.razor
<button @onclick="OnButtonClicked">Click me</button>
@code{
[Parameter]
public EventCallback ButtonClicked{ get; set; }
protected async Task OnButtonClicked()
{
await ButtonClicked.InvokeAsync(null);
}
}
例如作为 Razor 组件,按钮点击触发 OnButtonClicked
,然后调用 ButtonClicked
参数,可以在父页面中引用该参数。
Page.razor
@page "/pagename"
<MyComponent ButtonClicked="@ButtonClickedHandler" />
@code{
protected void ButtonClickedHandler()
{
Logger.LogInfo("Button click was handled on the page");
}
}
如果你想传递参数你可以这样做;
MyNextComponent.razor
<button @onclick="OnButtonClicked">Click me</button>
@code{
[Parameter]
public EventCallback<bool> ButtonClicked{ get; set; }
protected async Task OnButtonClicked(bool value)
{
await ButtonClicked.InvokeAsync(true);
}
}
Page.razor@page "/页面名称"
<MyNextComponent ButtonClicked="@ButtonClickedHandler" />
@code{
protected void ButtonClickedHandler(bool value)
{
Logger.LogInfo($"Button click was handled on the page: {value}");
}
}
关于c# - Blazor 将 EventCallback 作为类属性传递给组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64385601/
我有一个带有 EventCallBack 参数的 blazor 组件,它利用允许多个参数的新结构格式 [Parameter] public EventCallback NewDayScrolledIn
Blazor 应用程序是相互交互的多个 Blazor 组件的集合,我们可以在其他父组件中使用子组件。在实际的应用程序中,将数据或事件信息从一个组件传递到另一组件是一种十分常见的场景。您可能会
我正在尝试在 Blazor 中开发一个组件,我希望它从 C# 类中获取所有功能(文本、EventCallbacks 等)。像这样: Blazor 组件(代码隐藏): public partial cl
我正在尝试在 Blazor 中开发一个组件,我希望它从 C# 类中获取所有功能(文本、EventCallbacks 等)。像这样: Blazor 组件(代码隐藏): public partial cl
如果这个问题看起来很愚蠢,请原谅;但我对 @ 前缀的用法感到困惑。 将鼠标悬停在 onclick 等内置事件上时,Visual Studio 中的 IntelliSense 会显示事件类型(在本例中为
我的情况是这样的:我正在尝试实现和自动完成。 自动完成将有一个 Parameter将收到 string并返回 IEnumerable . 这是我正在尝试做的一个例子 自动完成.razor @code
我正在构建一个 Blazor ProgressBar 演示,并且我试图将一些代码从我的 Blazor 组件移到一个名为 ProgressManager 的 C# 类中。这样我就可以抽象代码并使 Pro
我正在尝试打开一个带有父对话框回调的子对话框。如果我没有将任何参数从 child 传回给 parent ,我可以让它工作,但是当我尝试将 bool 值从 child 传递给 parent 时,我得到一
我遇到了一个基本的 blazor 项目的问题。我有一个父组件和一个带有事件回调的子组件,我希望它传回一种类型的 T。我遇到的问题是我在将 MethodGroup 转换为 EventCallback 时
我有一个工作正常的简单 Blazor 服务器应用程序。 我正在尝试使用 Blazor WebAssembly 和 dotnet 5 创建等效的应用程序。 在工作应用程序中,我有一个 razor 组件,
当有人点击我网站上的“购买”按钮时,我正在尝试使用 dataLayer 和 dataLayer.push 通过 Google Tag Manager 跟踪此事件。 它看起来像这样: dataLayer
我正在尝试监听 ETW 内核事件。 第 1 步:调用 OpenTrace ,指定 EventCallback和可选 BufferCallback在我调用 ProcessTrace 期间将调用的函数:
我是 blazor C# 的新手,正在尝试制作一个简单的倒数计时器网站。我的网站包括: 显示计时器的文本 启动和停止按钮 用于设置计时器的按钮 我在设置计时器的按钮上遇到了问题。当我点击它时,它不会设
我是一名优秀的程序员,十分优秀!