【问题标题】:Adding multiple values in ViewModel and show them in a view在 ViewModel 中添加多个值并在视图中显示它们
【发布时间】:2015-03-22 16:56:31
【问题描述】:

如何将 Linq 选择中的值从多个表传递到视图?我有一个显示页面内容的模型。一个页面可以有多个内容,哪个内容可以有多个文件。 我有一个 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
    }
}

我总是遇到错误:

传入字典的模型项的类型为“WeChange.ViewModels.FicheirosConteudosViewModel”,但此字典需要类型为“System.Collections.Generic.IEnumerable`1[WeChange.ViewModels.FicheirosConteudosViewModel]”的模型项。

我怎么了?

【问题讨论】:

    标签: c# asp.net-mvc linq viewmodel


    【解决方案1】:

    视图需要 FicheirosConteudosViewModel 的集合,而您已将单个对象传递给它。

    试试这个:

    return View(ficheirosconteudos);
    

    这将使用LINQ 语句中的FicheirosInformationViewModel 集合,然后将其传递给视图。

    【讨论】:

    • 我得到“名称 'ficheirosconteudos' 在当前上下文中不存在”。但是如果我不明白,如果我通过 ficheirosconteudos,我将不会通过具有模型和选择值的 FicheirosConteudosViewModel ...
    • @RicardoSousa - 这是因为 ficheirosconteudos 在 foreach 循环中声明。 ficheirosconteudos 包含来自您的 LINQ 声明的多个对象,然后您使用它并在您的视图中迭代该集合。
    • 但是我没有更大的集合,即 FicheirosConteudosViewModel,它有一个 ficheirosconteudos 的集合
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2016-04-15
    • 1970-01-01
    • 2017-07-16
    相关资源
    最近更新 更多