【问题标题】:ASP.NET MVC Editor Template Not WorkingASP.NET MVC 编辑器模板不工作
【发布时间】:2023-03-13 08:33:01
【问题描述】:

在获取 Razor View 以呈现带有嵌入式 IEnumerable 的 ViewModel 时遇到问题后,我遇到了以下帖子: View Model IEnumerable<> property is coming back null (not binding) from post method?

我使用编辑器模板实现了建议的解决方案,但我的视图仅显示嵌入 IEnumerable 中的第一个属性。我实现了上述帖子中的两种解决方案,但带有EditorFor 模板的解决方案对我不起作用。我的视图仅显示IDproperty。

有没有人知道为什么带有编辑器模板的解决方案可能不适用于我的设置?我已经完全按照建议实施了。

【问题讨论】:

  • 请实际包含您设置中的一些代码。否则,我们只是做出假设。
  • 不,不知道...因为您没有包含任何代码。
  • 所有代码都在原帖中......不是点剪切和粘贴。正如我所说,我实施了两个建议的解决方案。带有 for 循环的那个可以工作,但编辑器模板只显示了可枚举属性的第一个属性。无论如何,我将继续使用 for 循环,想知道为什么编辑器模板不起作用。

标签: c# asp.net-mvc razor


【解决方案1】:

对于使用编辑器模板,请考虑以下提示

  1. 您必须将模板放在 EditorTemplates 文件夹中 视图文件夹。
  2. 您应该使用EditorFor HTML 助手来调用适当的模板 (当您有特定的模型要查看时,它会找到所需的 模板自动,否则你必须提示引擎, 无论是通过EditorFor 中的参数还是使用[UIHint] 属性 在模型中。看Extending Editor Templates for ASP.NET MVC
  3. 在模板中使用简单模型,例如stringDateTime?
  4. 要使用IEnumerable 模型作为模板,请考虑EditorFor IEnumerable with TemplateName 中提供的一个非常重要的提示。

【讨论】:

    【解决方案2】:

    如果您的视图只显示第一项,那么您的模板不会在 EditorTemplates 文件夹中被拾取。

    在 EditorFor 扩展方法中定义您的模板,如下所示:

    @Html.EditorFor(model => model, "NameofEditorTemplate")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多