部分视图给出了不明确的引用错误

Partial view gives ambiguous reference error

我正在尝试使用局部视图将元数据和 header 图像(单独的局部视图)渲染到 _layout.cshtml 中。执行此操作时出现以下错误:CS0104:'Meta' 是 'Namespace.Models.Meta' 和 'Umbraco.Web.PublishedContentModels.Meta'

之间的模糊引用

我尝试将 Meta 的名称更改为其他所有名称,甚至是无意义的键盘旋转,如 dfguyfgfjhagjhsgf。还是不行。

meta.cs 类如下所示:

using System.Collections.Generic;
using System.Linq;
using System.Web;
using Umbraco.Core.Models;
using Umbraco.Web;

namespace Namespace.Models
{
    public class Meta
    {
        public Meta(IPublishedContent content)
        {
            Name = content.Name;

            Description = content.GetPropertyValue<string>("metaDescription");
            Photo = content.GetPropertyValue<IPublishedContent>("metaHeaderImage");
        }

        public IPublishedContent Photo { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }

    }
}

Meta.cshtml 如下所示:

@model Meta
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>@Model.Name</title>
<meta name="description" content="@Model.Description">

<meta property="og:title" content="@Model.Name" />
<meta property="og:image" content="@Model.Photo" />

_layout.cshtml中对局部视图的调用是:

@Html.Partial("Meta", Model.Meta)

我想知道这个错误是什么意思,最好有一个可能的解决方案。

PS。我过去用与这次相同的部分视图设置完成了一个项目。那时候它工作得很好。不,我不再访问这个旧项目。

当您的解决方案中有两个同名的 class 并且代码无法决定使用哪一个时,就会出现不明确的引用错误。在您的情况下,class Meta 出现在 Namespace.ModelUmbraco.Web.PublishedContentModels 中。您可以像这样使用完全限定的 class 名称来更改 Meta.cshtml 文件以引用正确的 Meta class。

@model Namespace.Model.Meta