Asp.net mvc ViewModel Mvc显示详细信息
所以我有3个模型,需要在3个模型上的视图中显示信息,所以我创建了一个viewModel,其中包含我需要的视图信息 模式1:Asp.net mvc ViewModel Mvc显示详细信息,asp.net-mvc,Asp.net Mvc,所以我有3个模型,需要在3个模型上的视图中显示信息,所以我创建了一个viewModel,其中包含我需要的视图信息 模式1: public class Despesa { public int TipoDespesaId { get; set; } public int DespesaId { get; set; } [Display(Name = "Descrição da Despesa")] [Required] public string Des
public class Despesa
{
public int TipoDespesaId { get; set; }
public int DespesaId { get; set; }
[Display(Name = "Descrição da Despesa")]
[Required]
public string DespesaDescricao { get; set; }
[Display(Name = "Valor")]
[Required]
public decimal DespesaValor { get; set; }
public int TipoPagamentoId { get; set; }
[Display(Name = "Data")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}",ApplyFormatInEditMode = true)]
[Required]
public DateTime Data { get; set; }
public TipoDespesa TipoDespesa { get; set; }
public TipoPagamento TipoPagamento { get; set; }
[Display(Name = "Comentário")]
public string Comentario { get; set; }
}
模式2:
public class TipoDespesa
{
public int TipoDespesaId { get; set; }
[Display(Name = "Tipo de Despesa")]
[Required]
public string TipoDespesaNome { get; set; }
}
模式3:
public class TipoPagamento
{
public int TipoPagamentoId { get; set; }
[Display(Name = "Tipo de Pagamento")]
[Required]
public string TipoPagamentoNome { get; set; }
}
myViewModel:
public class ViewModelDetalhes
{
public string TipoDespesa { get; set; }
public string TipoPagamento { get; set; }
public string Descricao { get; set; }
public decimal Valor { get; set; }
public DateTime Data { get; set; }
public string comentario { get; set; }
}
我的详细资料:
public ActionResult Details(int? id)
{
var modelo = db.Despesas.Where(p => p.DespesaId == id).FirstOrDefault();
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
if (modelo == null)
{
return HttpNotFound();
}
ViewModelDetalhes model = new ViewModelDetalhes()
{
TipoDespesa = modelo.TipoDespesa,
TipoPagamento = modelo.TipoPagamento,
Descricao = modelo.DespesaDescricao,
Valor = modelo.DespesaValor,
comentario = modelo.Comentario,
};
return View(model);
}
我不知道怎样才能得到TipoPagamento和TipoDespesa的值我应该在modelo上做一个包含吗?我有点困惑,需要知道如何检索与主类Despesas关联的TipoPagamento和TipoDespesa值。
谢谢您的ViewModel
public class ViewModelDetalhes
{
public string TipoDespesa{ get; set; }
public string TipoPagamento { get; set; }
public string Descricao { get; set; }
public decimal Valor { get; set; }
public DateTime Data { get; set; }
public string comentario { get; set; }
}
如果您想延迟加载,请使用虚拟机
public class Despesa
{
public int TipoDespesaId { get; set; }
public int DespesaId { get; set; }
[Display(Name = "Descrição da Despesa")]
[Required]
public string DespesaDescricao { get; set; }
[Display(Name = "Valor")]
[Required]
public decimal DespesaValor { get; set; }
public int TipoPagamentoId { get; set; }
[Display(Name = "Data")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}",ApplyFormatInEditMode = true)]
[Required]
public DateTime Data { get; set; }
public virtual TipoDespesa TipoDespesa { get; set; }
public virtual TipoPagamento TipoPagamento { get; set; }
[Display(Name = "Comentário")]
public string Comentario { get; set; }
}
你可以详细说明行动结果
public ActionResult Details(int? id)
{
var modelo = db.Despesas.Where(p => p.DespesaId == id).FirstOrDefault();
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
if (modelo == null)
{
return HttpNotFound();
}
ViewModelDetalhes model = new ViewModelDetalhes()
{
TipoDespesa = modelo.TipoDespesa.TipoDespesaNome ,
TipoPagamento = modelo.TipoPagamento.TipoPagamentoNome,
Descricao = modelo.DespesaDescricao,
Valor = modelo.DespesaValor,
comentario = modelo.Comentario,
};
return View(model);
}
public ActionResult Details(int? id)
{
var modelo = db.Despesas.Include("TipoDespesa").Include("TipoPagamento").Where(p => p.DespesaId == id).FirstOrDefault();
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
if (modelo == null)
{
return HttpNotFound();
}
ViewModelDetalhes model = new ViewModelDetalhes()
{
TipoDespesa = modelo.TipoDespesa.TipoDespesaNome ,
TipoPagamento = modelo.TipoPagamento.TipoPagamentoNome,
Descricao = modelo.DespesaDescricao,
Valor = modelo.DespesaValor,
comentario = modelo.Comentario,
};
return View(model);
}
如果不想立即加载,请使用include。无需将虚拟设备添加到POCO
在你的详细行动结果
public ActionResult Details(int? id)
{
var modelo = db.Despesas.Where(p => p.DespesaId == id).FirstOrDefault();
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
if (modelo == null)
{
return HttpNotFound();
}
ViewModelDetalhes model = new ViewModelDetalhes()
{
TipoDespesa = modelo.TipoDespesa.TipoDespesaNome ,
TipoPagamento = modelo.TipoPagamento.TipoPagamentoNome,
Descricao = modelo.DespesaDescricao,
Valor = modelo.DespesaValor,
comentario = modelo.Comentario,
};
return View(model);
}
public ActionResult Details(int? id)
{
var modelo = db.Despesas.Include("TipoDespesa").Include("TipoPagamento").Where(p => p.DespesaId == id).FirstOrDefault();
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
if (modelo == null)
{
return HttpNotFound();
}
ViewModelDetalhes model = new ViewModelDetalhes()
{
TipoDespesa = modelo.TipoDespesa.TipoDespesaNome ,
TipoPagamento = modelo.TipoPagamento.TipoPagamentoNome,
Descricao = modelo.DespesaDescricao,
Valor = modelo.DespesaValor,
comentario = modelo.Comentario,
};
return View(model);
}
阅读更多信息:一些问题,在这种情况下,虚拟是为了什么??,我理解了在没有包含的情况下如何做同样的事情,我想如果我创建了modelview,我不需要使用包含:包含工作,但是,如果我们可以使用includes:SInclude关键字执行所有操作,那么为什么要使用viewModel呢。如果您对该属性使用了Virtual,则不需要在Linq查询中使用Include。另一方面,ViewModel只是一个类,用于指定要在视图中显示的内容。在您的情况下,您不需要viewModel,您可以使用Despesas模型。但是,通过使用viewModel,您只选择了要在视图中显示的特性。很好,在带宽、安全性、处理等方面,你没有额外的属性。。。作为一个好的实践,我总是使用viewModelViewModel,它并不是Include的替代品。它们是完全不同的东西。所以基本上ViewModel可以使代码更清晰,对吗?因为在我的情况下,正如你所说,我不需要ViewModel,我可以只包含我需要的类并使用atirbutes,使用虚拟是一种好的做法吗??