【问题标题】:in asp.net core Component @OnClick not trigger target method在 asp.net 核心组件中@OnClick 不触发目标方法
【发布时间】:2021-09-05 15:49:38
【问题描述】:

我尝试使用我的存储库数据显示在卡片视图中,然后按按钮查看有关该项目的更多信息,它不起作用。 @OnClick 仅适用于 JSON 数据 @using Microsoft.AspNetCore.Components.Web - 访问@onclick 和更多选项

repoItem - 我的 ItemRepository 用于从数据库中获取数据 @OnClick="(e => SelectProduct(item.Id))" - 当我点击物品卡片时,它应该将物品 ID 发送到 SelectProduct(item.Id) 方法。

但它适用于以下链接。他处理 JSON 数据,但我需要处理模型数据。

https://github.com/dotnet-presentations/ContosoCrafts/blob/master/src/Components/ProductList.razor

<div class="card-columns">
@foreach (var item in repoItem.GetAll())
{
<div class="card">
<div class="card-header">
<h5 class="card-title">@item.Name</h5>
</div>
<div class="card-body">
<h5 class="card-title"> Total available items : @item.Quantity</h5>
<h5 class="card-title">Price : Rs. @item.Price.00</h5>
</div>
<div class="card-footer">
<small class="text-muted">
<button @onclick="(e => SelectProduct(item.Id))"
data-toggle="modal" data-target="#productModal" class="btn btn-primary">
More Info
</button>
</small>
</div>
</div>
}
</div>
@code {

Item selectedItem;
int selectedItemId;


void SelectProduct(int productId)
{
    selectedItemId = productId;
    selectedItem = _context.Items.Where(x => x.Id == selectedItemId).FirstOrDefault();
    ContItem();
}

int itemcnt = 0;
string cuntLable;
void ContItem()
{
    if (selectedItem.Quantity != null || selectedItem.Quantity != 0)
    {
        itemcnt = selectedItem.Quantity;
        cuntLable = itemcnt.ToString();
    }
    else cuntLable = "Not available ..!";
}
}

【问题讨论】:

  • 我现在不确定,但你试过小写的@onclick="…"吗?我认为它是区分大小写的。话虽这么说,究竟是什么不起作用?您的 SelectProduct 方法是否被调用?你试过调试这个吗?
  • @poke 实际上我使用了@onclick="…" 它在我尝试在这里复制我的代码时被修改了。 @onclick 将通过智能感知 @using Microsoft.AspNetCore.Components.Web 建议此库有 on 选项

标签: asp.net-core onclick components razor-pages


【解决方案1】:

问题:单击按钮时@onclick=".." 未命中我的selectprodect 方法断点。

解决方法:错误是Statup.cs需要在ConfigureServices中添加services.AddServerSideBlazor(),然后在Configure部分添加endpoints.MapBlazorHub()

app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
                endpoints.MapRazorPages();
                endpoints.MapBlazorHub();
            });

经过 6 个小时的努力。 @onclick 工作顺利

【讨论】:

    猜你喜欢
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 2013-04-30
    • 2021-07-22
    • 2017-12-14
    相关资源
    最近更新 更多