所以我有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 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; }
}
MODEL2:
public class TipoDespesa
{
public int TipoDespesaId { get; set; }
[Display(Name = "Tipo de Despesa")]
[Required]
public string TipoDespesaNome { get; set; }
}
model3:
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。 感谢
答案 0 :(得分:0)
您的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; }
}
你详细说明ActionResult
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);
}
如果你不想急于加载使用include。无需向POCO添加虚拟内容。
在你的细节ActionResult
中 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);
}
在此处阅读更多内容:https://msdn.microsoft.com/en-gb/data/jj574232.aspx