我的问题与初学者的主题有关(对不起......)。我刚开始使用 MVC,此刻我正在尝试理解这些概念和结构
我来自 webform 的做事方式,现在我需要将旧的 webform 转发器模拟到 MVC 中。在网上寻找替代方案时,我发现 foreach 循环是 MVC 实现这一目标的方式之一,对吗?
然后我有点上下文(如果我说的话表明对某些概念有错误的理解,请纠正我)......
这是我通过 edmx 文件创建的模型类
public partial class qryMonitor
{
public int Nsu { get; set; }
public string NomeDaSolicitacao { get; set; }
public string Grupo { get; set; }
public string Prioridade { get; set; }
public string Transito { get; set; }
public Nullable<int> IdDestinatario { get; set; }
public string NomeAutor { get; set; }
public string DepartamentoAutor { get; set; }
public int IdAutor { get; set; }
public Nullable<int> IdAnalistaDesignado { get; set; }
public string NomeAnalistaDesignado { get; set; }
public Nullable<int> IdSuperiorAnalistaDesignado { get; set; }
public string NomeSuperiorAnalistaDesignado { get; set; }
public string Atividade { get; set; }
public string CodigoRgb1 { get; set; }
public string DataSolicitacao { get; set; }
public int MarcarSolicitacao { get; set; }
}
然后我创建了另一个具有单个属性的类...
public class ChamadosViewModel
{
public IEnumerable<qryMonitor> Chamados { get; set; }
}
现在我的控制器的代码
public ActionResult Index()
{
EntidadesHelpDesk _dbHelpDesk = new EntidadesHelpDesk();
ChamadosViewModel viewModel = new ChamadosViewModel()
{
Chamados = _dbHelpDesk.qryMonitor
.ToList()
.Where(x => x.Transito == "Respondida")
.Select(x => new qryMonitor
{
Nsu = x.Nsu,
Transito = x.Transito,
NomeDaSolicitacao = x.NomeDaSolicitacao,
NomeAutor = x.NomeAutor,
Prioridade = x.Prioridade,
DataSolicitacao = x.DataSolicitacao
})
};
return View(viewModel);
}
最后是通过向导创建的视图
@model IEnumerable<ServiceDesk.ViewModel.ChamadosViewModel>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using (Html.BeginForm())
{
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>
}
</table>
}
当我运行这些时,我得到一个类型不匹配(我能够理解,但不能解决)。完整的按摩是
"The model item passed into the dictionary is of type'ServiceDesk.ViewModel.ChamadosViewModel', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[ServiceDesk.ViewModel.ChamadosViewModel]'."
我在网上找了一些类似的主题......我发现很少,但我无法通过比较示例和上述情况来解决问题。
我注意到的一件事是,通常在示例中,我看到了像“Model.ForeachData”这样的代码
在我的情况下,智能感知除了模型本身之外什么都没有(看起来像一组事物,而不仅仅是一个简单的组)。
在此先感谢并为我的英语(不是我的主要语言)感到抱歉。再次感谢您的帮助。