в asp. net основной компонент @OnClick не вызывает целевой метод - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь использовать данные своего хранилища для отображения в виде карты, затем нажмите кнопку, чтобы увидеть больше информации об элементе, он не работает. @OnClick работает только для JSON данных @using Microsoft.AspNetCore.Components.Web - для доступа к @onclick и более опции

repoItem - мой ItemRepository для получения данных из базы данных @OnClick="(e => SelectProduct(item.Id))" - когда я щелкаю карточку элемента, его shoud get item 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 ..!";
}
}

1 Ответ

0 голосов
/ 19 апреля 2020

проблема: @onclick = ".." не достиг моей точки останова метода selectprodect при нажатии кнопки.

Решение: ошибка: Statup.cs необходимо добавить services.AddServerSideBlazor() в ConfigureServices и затем добавьте Configure part endpoints.MapBlazorHub()

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

после 6 часов тяжелой работы. @onclick работает плавно

...