将自定义模型传递给 Razor 页面中的 Partial

Posted

技术标签:

【中文标题】将自定义模型传递给 Razor 页面中的 Partial【英文标题】:Passing a custom model to a Partial in Razor Pages 【发布时间】: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 问题中输入的占位符,而不是真正的占位符。我的代码中真正的占位符实际上是匹配的。不过感谢您的回复!我现在已经更正了。 【参考方案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吗?

以上是关于将自定义模型传递给 Razor 页面中的 Partial的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序将自定义组件获取的值传递给页面

将自定义标头传递给 Select2 上的 Ajax 请求

将自定义ListView项目传递给Android中的其他活动

将自定义道具传递给 TypeScript 中的 Redux 表单字段

Razor View 将错误的 Id 传递给 OnPost 方法

将自定义 ListView 项传递给 Android 中的其他活动