正如我开始明白的那样,在MVC中,所有关于视图模型都在视图中显示数据。但是当我的家庭控制器中的Index-method看起来像这样时;
<div class="form-group">
<select class="form-control" name="anio"(change)="onChange($event.target.value)">
<option *ngFor="let list of listaAnios" [ngValue]="list">{{list}}</option>
</select>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="allMonths">Ver todos los meses:</label>
<div class="col-sm-4">
<input type="checkbox" name="allMonths" id="allMonths" [ngModel]="" (ngModelChange)="showAll($event)">
</div>
</div>
<div class="clearfix"></div>
<div *ngIf="!estados">
Cargando Listado de Pagos...
</div>
<div *ngIf="estados" class="table-responsive col-lg-12 tablilla">
<div>
<ay-treeTable [value]="datos.data">
<ay-column field="nom_item" header="Ingresos y Gastos"></ay-column>
<ng-container *ngFor="let month of finalarr | slice: this.listaMonthsNames.length - this.check">
<ay-column field="{{month[0]}}" header="{{month[1]}}"> {{month[0]}} </ay-column>
</ng-container>
</ay-treeTable>
</div>
</div>
如何在我的网页中插入带有viewmodel的局部视图,如下所示(_Layout.cshtml):
public async Task<IActionResult> Index()
{
return View(await _context.Products.ToListAsync());
}
毕竟,index-method需要一个实体模型。如果我尝试将viewmodel传递给索引视图,我会得到一个异常,告诉我在_context中找不到该模型。
答案 0 :(得分:1)
您可能已经知道为什么ViewModel应该在您的视图中使用,为什么不在实体中使用,但如果您不这样做,那么让我解释一下。
当您在页面上显示数据时,通常需要ItemSelected
或HideItem
等属性,即仅与页面相关的任何内容,entities
上不需要
现在我们知道为什么需要保留entities
和viewmodels
的重要性。现在的问题是如何转移数据
from entities to viewmodels when displaying data
OR
from viewmodels to entities when updating data on db
您有两个选择
如果您正在考虑使用AutoMapper,那么还要查看专门针对Entity Framework的https://github.com/AutoMapper/AutoMapper.EF6
答案 1 :(得分:0)
你可以使用这里的子动作方法
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
public class User {
正如你可以看到这个索引页面剂量已经分配给它的任何模型现在检查Homesection动作看起来像这样
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_LayoutHome.cshtml";
}
@Html.Action("HomeSection")
@Html.Action("AboutSection")
和_HomeSectionPartial视图看起来像这样
[ChildActionOnly]
public async Task<ActionResult> HomeSection()
{
try
{
Home home = new Home();
home = await HomePageBLL.GetHomeSection();
return View("_HomeSectionPartial", home);
}
catch (Exception ex)
{
throw ex;
}
}
当您想要使用不同模型的不同局部视图在同一主视图中呈现时,这是一个最佳的想法,即使主视图也可以有模型库