У меня есть следующий код 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 })