【问题标题】:Problem with IEnumerable in View视图中的 IEnumerable 问题
【发布时间】:2011-02-10 21:17:13
【问题描述】:

我有一个枚举模型的视图。

在枚举模型的网格之外,我想要一个接受MeetingActionId 参数的创建链接,它将ActionUpdate 对象绑定到特定的MeetingAction

如何获取创建链接以接受该属性?目前我得到错误

'System.Collections.Generic.IEnumerable' 不包含
 'MeetingActionId' 的定义并且没有扩展方法 'MeetingActionId'
 接受类型的第一个参数
'System.Collections.Generic.IEnumerable' 可以找到

我认为这与IEnumerable 有关。我打算通过将网格放在一个部分来解决它,但这对我来说似乎是一个 hacky 解决方案。

谁能提供帮助,希望能告诉我为什么会发生这种情况?

谢谢。

下面的代码 sn-p 使用 MVCContrib Grid 和 T4MVC 用于强类型操作链接。

@model IEnumerable<Actioner.Models.ActionUpdate>
@using MvcContrib.UI.Grid     

@{
    ViewBag.Title = "ListUpdates";
}

<h2>ListUpdates</h2>
@Html.ActionLink("Add New Update",MVC.ActionUpdates.Create(Model.MeetingActionId))


@Html.Grid(Model).Columns(column => {
   column.For(a=> a.UpdateText);
   column.For(a=> a.CreatedOn).Format("{0:d}");
   column.For(a=>a.CreatedBy);
})

编辑:感谢大家的贡献。经过一番思考,我决定最好将 actionupdates 网格呈现为 MeetingActions 的“详细信息”视图中的部分视图,从而完全避免这个问题。

这个问题可以结束了

【问题讨论】:

  • 你想做什么?您有一个正在处理某个模型的集合的视图。您想在此视图中创建一个链接。您想将此链接指向此集合的哪个元素?如果你能回答这个问题,那么你可以在集合中获取模型的这个特定实例,并在你的 T4 模板中使用它。
  • 还是一头雾水!该链接应创建一个新的 ActionUpdate。每个 ActionUpdate 都属于一个 MeetingAction,所以一个 ActionUpdate 有一个 MeetingActionId,我想将它传递给 ActionUpdate 控制器中的 create Action。

标签: asp.net-mvc ienumerable razor t4mvc mvccontrib-grid


【解决方案1】:

嗨 我不确定我是否理解正确,但模型似乎是一个包含 ActionUpdate 类型项目的列表,该类型有一个名为 MeetingActionId 的属性。如果是这种情况,模型本身没有您尝试使用的属性 MeetingActionId。也许你可以这样做:

Model.First().MeetingActionId

【讨论】:

  • 那行得通(肯定是在编译方面:)),但我得到运行时错误,“序列不包含元素”。
  • 可能列表(模型)为空?
  • 是否建议使用具有两个属性的视图模型:MeetingActionId 和 IEnumerbale?至少 nulls/empty 值不会破坏所有的乐趣
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
相关资源
最近更新 更多