【问题标题】:Passing a custom model to a Partial in Razor Pages将自定义模型传递给 Razor 页面中的 Partial
【发布时间】:2021-10-18 10:17:06
【问题描述】:

我有一个部分页面,它传递了一个事件列表(其中一个事件是一个自定义模型)。这工作正常:

@model IEnumerable<Entry>
@using MySite.Models

在部分页面中,我遍历模型中的条目列表:

    @if (Model.Count() > 0)
    {
        foreach (var entry in Model)
        {
          ...

这也很好用。但是,在这个foreach 循环中,我想将条目的数据发送到另一个局部视图:

@await Html.PartialAsync("/Pages/Shared/ShareMedia/shareMedia.cshtml", @entry)

在此部分中,我声明了以下内容:

@model Entry

但这似乎不会返回错误:

error CS0118: 'Entry' is a namespace but is used like a type

如果我再尝试添加模型的完整路径

@model MySite.Models.Entry

尝试加载部分时出现以下错误:

Uncaught ReferenceError: MySite is not defined
at HTMLImageElement.onclick ((index):1)

有没有人可以提供任何建议来帮助我解决这个问题。我做了一些 googlinig 但没有得到任何方向。

非常感谢任何建议!

【问题讨论】:

  • 你混淆了 MySight 和 MySite
  • 那是个好地方。 MySite/MySight 只是我在此 Stack Overflow 问题中输入的占位符,而不是真正的占位符。我的代码中真正的占位符实际上是匹配的。不过感谢您的回复!我现在已经更正了。

标签: asp.net-core model razor-pages partial-views


【解决方案1】:

你最好不要将一个类命名为同一个命名空间。尝试更改Entry名称,例如EntryModel。然后使用

@model IEnumerable<EntryModel>

局部视图:

@model EntryModel

未捕获的 ReferenceError: MySite 未定义在 HTMLImageElement.onclick ((index):1) 该错误通常发生在未定义 onclick 事件中的函数时。例如:

<button onclick="MySite()">click</button>

如果在js中没有定义MySite(),就会报错。

【讨论】:

  • 感谢您的回复。事情就是这样......我在任何我能看到的地方都没有条目作为命名空间,它只是一个模型。只有当我完全限定模型条目时,它才会这样识别它。只有这样我才能得到上面提到的 Uncaught ReferenceError。
  • 实际上,我认为问题在于我需要序列化我的模型才能将其发送到 Javascript 函数中(我实际上并没有包含在上面的示例中!)lol
  • 可以分享你的js吗?
猜你喜欢
  • 2019-06-05
  • 2011-05-22
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 2018-08-30
  • 2020-04-24
  • 1970-01-01
相关资源
最近更新 更多