Компоненты представления аналогичны частичным представлениям, но они намного более мощные. Компоненты представления не используют привязку модели и зависят только от данных, предоставленных при обращении к ней.
См. Следующие шаги:
1.Создать класс CustomerDetailsViewComponent
в папке ViewComponents
, которая создается в корневом пути
public class CustomerDetailsViewComponent:ViewComponent
{
private readonly MVCDbContext _context;
public CustomerDetailsViewComponent(MVCDbContext context)
{
_context = context;
}
public async Task<IViewComponentResult> InvokeAsync(int customerId)
{
var model = await _context.Customer.FindAsync(customerId);
return View(model);
}
}
2. Путь поиска компонента View: /Views/Shared/Components/CustomerDetails/Default.cshtml
, именем представления по умолчанию для компонента представления является Default, что означает, что ваш файл представления будет обычно называться Default.cshtml. Вы можете указать другое имя представления при создании результата компонента представления или при вызове метода View.
@model TestProject.Models.Customer
<div class="row">
<div class="col-md-4">
<form asp-action="Edit">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="Id" />
<div class="form-group">
<label asp-for="Name" class="control-label"></label>
<input asp-for="Name" class="form-control" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Age" class="control-label"></label>
<input asp-for="Age" class="form-control" />
<span asp-validation-for="Age" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</form>
</div>
</div>
3.Чтобы использовать компонент представления, вызовите в представлении следующее:
@await Component.InvokeAsync("CustomerDetails", new { customerId= 123})
Для получения более подробной информации о компонентах просмотра, вы можете обратиться к официальной документации