. NET Core - Почему я должен использовать View Components поверх Blazor Components, встроенных в MVC App или Razor Pages - PullRequest
0 голосов
/ 25 февраля 2020

В нашем новом проекте мы используем View Compoments в нашем существующем приложении MVC для отдельных и повторно используемых компонентов. В последнее время Blazor сделал несколько серьезных шагов вперед. Мы поняли, что гораздо удобнее использовать компоненты Blazor для подобных асинхронных задач. Например, добавление товара в корзину:

Просмотр компонента (старый подход):

В компоненте просмотра нам нужно сделать AJAX - POST, чтобы добавить позицию, а затем перезагрузить компонент просмотра корзины через запрос AJAX - GET.

компонент бритвы (новый подход)

официальные документы: https://docs.microsoft.com/en-us/aspnet/core/blazor/integrate-components?view=aspnetcore-3.1

В Компонент Razor. Мы просто вызываем базовый метод @code, чтобы добавить позицию, и можем вызвать событие, которое повторно отображает компонент представления корзины. Таким образом, мы можем go без JavaScript вообще. Ниже рабочий пример в моем приложении MVC:

ProductList.razor

image

ProductList.razor.cs

Разделенный код, но работает так же, как когда я помещаю его в "@Code ()" на моем компоненте бритвы (наследует vom ComponentBase)

public partial class ProductList : ComponentBase
{
    [Inject] Business.Cart cart { get; set; }
    [Inject] Business.Product product { get; set; }

    protected List<ListProduct> products = new List<ListProduct>();

    protected override async Task OnInitializedAsync()
    {
        List<ListProduct> temp = await product.GetProductList(new GetProductListRequest { CategoryURL = UrlDesc });
        products = temp;
    }

    protected async Task addposition(int artid)
    {
        CartAddPositionResponse resp = await cart.AddPosition(new CartAddPositionRequest { ProductID = artid });
        cart.CallRequestRefresh();
    }
}

Catalog.cs html (MVC View)

<component type="typeof(ProductList)" render-mode="ServerPrerendered" param-urlDesc="@Model.urlDesc"/>

Это приводит к следующему вопросу:

Есть ли какие-либо причины использовать View Components вообще, если я просто могу использовать компоненты Blazor, которые обеспечивают преимущество прямого вызова асинхронных методов и могут быть повторно использованы? несколько раз где-нибудь в проекте? Есть ли и недостатки?

1 Ответ

0 голосов
/ 25 февраля 2020

Основная функциональность компонента View заключается в том, что он отображает фрагмент вместо всего ответа. Это может быть использовано для визуализации View вместе с данными, например, Панель входа / выхода из системы для всех видов, Панель навигации, последние обновления данных и т. Д. c. Просмотр компонентов также позволяет вам выполнять асинхронные операции над ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...