将自定义模型传递给 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的主要内容,如果未能解决你的问题,请参考以下文章
将自定义ListView项目传递给Android中的其他活动
将自定义道具传递给 TypeScript 中的 Redux 表单字段