PartialView конвертировать из MVC в .NET Core 2.2 - PullRequest
0 голосов
/ 29 мая 2019

У меня есть следующий код MVC:


**** Edit.cshtml
@Html.Action("_Customer", "Orders", new { idCustomer = @Model.idCliente })

**** Controller.cs
        public IActionResult _Customer(int idCustomer)
        {
            var model = new Customer();

            // Ricavo Dati
            Utente u = new Utente();
            model = u.aDettagliCustomer(idCustomer, conn);

            return PartialView(model);
        }

**** View _Customer.cshtml
@model Models.Customer

Ragione Sociale: @Model.RagioneSociale<br />
@Model.Nome @Model.Cognome<br />
@Model.Sesso<br />
@Model.Indirizzo<br />
@Model.CAP @Model.Citta (@Model.Provincia)<br />
@Model.Stato
Tel: @Model.Telefono<br />
Cod.Fiscale: @Model.CodiceFiscale<br />
P.IVA: @Model.PartitaIVA<br />
email: @Model.Email

Я прочитал, что желательно использовать @await Html.PartialAsync, но как конвертировать этот код?

Я пытался преобразовать код с помощью View Component.

Но я получаю ошибку: InvalidOperationException: компонент представления с именем CustomerViewComponent не может быть найден. Компонент представления должен быть открытым неабстрактным классом, не содержать общих параметров и быть либо украшенным 'ViewComponentAttribute', либо иметь имя класса, оканчивающееся суффиксом 'ViewComponent'. Компонент представления не должен быть оформлен как «NonViewComponentAttribute».

Код:

    public class CustomerViewComponent: ViewComponent
    {
        private readonly IOptions<ConnectionStrings> conn;

        public CustomerViewComponent(IOptions<ConnectionStrings> config)
        {
            this.conn = config;
        }


        public async Task<IViewComponentResult> InvokeAsync(int idCustomer)
        {
            var items = await GetItemsAsync(idCustomer);
            return View("_Customer", items);
        }

        private Task<Customer> GetItemsAsync(int idCustomer)
        {
            var model = new Customer();

            // Ricavo Dati
            Utente u = new Utente();
            model = u.aDettagliCustomer(idCustomer, conn);

            return Task.FromResult<Customer>(model);
        }

    }
@await Component.InvokeAsync("CustomerViewComponent", new { idCustomer = @Model.idCliente })

1 Ответ

0 голосов
/ 29 мая 2019

используйте <partial name="partialName" model="ModelName" /> вместо возврата частичного представления в контроллере.Вы можете использовать это n

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