在 ViewModel 中添加多个值并在视图中显示它们
Adding multiple values in ViewModel and show them in a view
如何将 Linq select 中的值从多个表传递到视图?我有一个显示页面内容的模型。一个页面可以有多个内容,而哪个内容可以有多个文件。
我有一个 ViewModel 来组装内容的信息:
namespace WeChange.ViewModels
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
public class FicheirosInformationViewModel
{
public int id_filec { get; set; }
public string filenamec { get; set; }
public string fileurlc { get; set; }
public string fileimg { get; set; }
public string fileextc { get; set; }
}
public class FicheirosConteudosViewModel
{
public int id_conteudo { get; set; }
public string conttitle { get; set; }
public string conttext { get; set; }
public DateTime contdate { get; set; }
public ICollection<FicheirosInformationViewModel> FicheirosInformation { get; set; }
}
}
在我的控制器中:
public ActionResult Index(FicheirosInformationViewModel FichInfoVM, FicheirosConteudosViewModel FichConteVM)
{
ViewBag.Message = "Academia Page";
var cwc_academia = db.CWC_CONTEUDOS.Include(c => c.CWC_PAGINAS).Where(c => c.CWC_PAGINAS.id_page == 1);
foreach (var itemfile in cwc_academia)
{
var FichesContes = new FicheirosConteudosViewModel();
FichesContes.id_conteudo = itemfile.id_conteudo;
FichesContes.conttitle = itemfile.conttitle;
FichesContes.conttext = itemfile.conttext;
FichesContes.contdate = itemfile.contdate;
var ficheirosconteudos = from c in db.CWC_FILESCONTEUDOS
join d in db.CWC_FICHEIROS on c.idfile equals d.id_file
join e in db.CWC_TIPOSFICHEIROS on d.idfiletype equals e.id_tpfile
join f in db.CWC_EXTENSOESFILES on e.id_tpfile equals f.idtpdoc
where c.idconte == itemfile.id_conteudo
select new FicheirosInformationViewModel()
{
id_filec = d.id_file,
filenamec = d.filename,
fileurlc = d.fileurl,
fileimg = e.tipoimg,
fileextc = f.extensao
};
}
return View(FichConteVM);
}
}
在视图中:
@model IEnumerable<WeChange.ViewModels.FicheirosConteudosViewModel>
@foreach (var item in Model)
{
<div class="divider"><div class="circle"><img src="/Images/orange.png" alt="" /></div></div>
<div id="acad" class="container">
<div class="jumbotron">
<h2>@Html.Raw(item.conttitle)</h2>
@Html.Raw(item.conttext)
</div>
</div>
foreach (var fich in item.FicheirosInformation)
{
@fich.id_filec
<br />
@fich.filenamec
<br />
@fich.fileurlc
}
}
我总是遇到错误:
The model item passed into the dictionary is of type 'WeChange.ViewModels.FicheirosConteudosViewModel', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[WeChange.ViewModels.FicheirosConteudosViewModel]'.
我哪里出错了?
视图需要 FicheirosConteudosViewModel
的集合,而您已将单个对象传递给它。
试试这个:
return View(ficheirosconteudos);
它将使用您的 LINQ
语句中的 FicheirosInformationViewModel
集合,然后将其传递给视图。
如何将 Linq select 中的值从多个表传递到视图?我有一个显示页面内容的模型。一个页面可以有多个内容,而哪个内容可以有多个文件。 我有一个 ViewModel 来组装内容的信息:
namespace WeChange.ViewModels
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
public class FicheirosInformationViewModel
{
public int id_filec { get; set; }
public string filenamec { get; set; }
public string fileurlc { get; set; }
public string fileimg { get; set; }
public string fileextc { get; set; }
}
public class FicheirosConteudosViewModel
{
public int id_conteudo { get; set; }
public string conttitle { get; set; }
public string conttext { get; set; }
public DateTime contdate { get; set; }
public ICollection<FicheirosInformationViewModel> FicheirosInformation { get; set; }
}
}
在我的控制器中:
public ActionResult Index(FicheirosInformationViewModel FichInfoVM, FicheirosConteudosViewModel FichConteVM)
{
ViewBag.Message = "Academia Page";
var cwc_academia = db.CWC_CONTEUDOS.Include(c => c.CWC_PAGINAS).Where(c => c.CWC_PAGINAS.id_page == 1);
foreach (var itemfile in cwc_academia)
{
var FichesContes = new FicheirosConteudosViewModel();
FichesContes.id_conteudo = itemfile.id_conteudo;
FichesContes.conttitle = itemfile.conttitle;
FichesContes.conttext = itemfile.conttext;
FichesContes.contdate = itemfile.contdate;
var ficheirosconteudos = from c in db.CWC_FILESCONTEUDOS
join d in db.CWC_FICHEIROS on c.idfile equals d.id_file
join e in db.CWC_TIPOSFICHEIROS on d.idfiletype equals e.id_tpfile
join f in db.CWC_EXTENSOESFILES on e.id_tpfile equals f.idtpdoc
where c.idconte == itemfile.id_conteudo
select new FicheirosInformationViewModel()
{
id_filec = d.id_file,
filenamec = d.filename,
fileurlc = d.fileurl,
fileimg = e.tipoimg,
fileextc = f.extensao
};
}
return View(FichConteVM);
}
}
在视图中:
@model IEnumerable<WeChange.ViewModels.FicheirosConteudosViewModel>
@foreach (var item in Model)
{
<div class="divider"><div class="circle"><img src="/Images/orange.png" alt="" /></div></div>
<div id="acad" class="container">
<div class="jumbotron">
<h2>@Html.Raw(item.conttitle)</h2>
@Html.Raw(item.conttext)
</div>
</div>
foreach (var fich in item.FicheirosInformation)
{
@fich.id_filec
<br />
@fich.filenamec
<br />
@fich.fileurlc
}
}
我总是遇到错误:
The model item passed into the dictionary is of type 'WeChange.ViewModels.FicheirosConteudosViewModel', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[WeChange.ViewModels.FicheirosConteudosViewModel]'.
我哪里出错了?
视图需要 FicheirosConteudosViewModel
的集合,而您已将单个对象传递给它。
试试这个:
return View(ficheirosconteudos);
它将使用您的 LINQ
语句中的 FicheirosInformationViewModel
集合,然后将其传递给视图。