【问题标题】:Using @TextBoxFor with @model IEnumerable<>将 @TextBoxFor 与 @model IEnumerable<> 一起使用
【发布时间】:2015-11-19 18:12:06
【问题描述】:

我有一个主控制器/视图,它使用@model IEnumberable&lt;ReportModel&gt; 作为强类型视图。我想使用@TextBoxFor(),但这不适用于 IEnumberable(或者,至少,intellisense 不喜欢它)。是否需要创建局部视图或其他东西以允许在创建表单元素时使用强类型模型?

【问题讨论】:

  • IEnumerable 是否不表示可能有很多结果。如何将它们放入单个文本框中?
  • 该视图显示了 IEnumberable 中的多行,但我想提供一组文本框用于过滤目的,我可以将它们提交给控制器和 EF 存储库。

标签: c# asp.net-mvc razor


【解决方案1】:

您需要将 IEnumerable 更改为 IList 并遍历集合的记录并选择将出现在文本框中的属性:

@model IList<ReportModel>

@for(int i = 0; i < model.Count; i++)
{
    @Html.TextBoxFor(m => model[i].Property)
}

感谢 Stephen Muecke 的更正。

【讨论】:

  • 谢谢。我试图将视图拆分为带有单个模型的标题,以及带有 IEnumberable 模型的细节。这要容易得多。最后我只是在循环之外做了一个记录.First().Property。
  • 提交表单时不起作用,绑定会失败。您需要一个 for 循环(并且模型必须是 IList&lt;T&gt; 或自定义 EditorTemplateReportModel
  • @StephenMuecke 感谢您的更正 - 以前只需要这样做一次,我就忘了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
相关资源
最近更新 更多