Частичное представление дает неоднозначную ошибку ссылки - PullRequest
1 голос
/ 23 марта 2019

Я пытаюсь использовать частичное представление для отображения метаданных и изображения заголовка (отдельного частичного представления) в _layout.cshtml.При этом я получаю следующую ошибку: CS0104: «Мета» является неоднозначной ссылкой между «Namespace.Models.Meta» и «Umbraco.Web.PublishedContentModels.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.В прошлом я делал проект с той же настройкой для частичных представлений, что и на этот раз.тогда это работало просто отлично.Нет, у меня больше нет доступа к этому старому проекту.

1 Ответ

2 голосов
/ 23 марта 2019

Неоднозначная ошибка ссылки возникает, когда в вашем решении два класса с одинаковыми именами, и код не может решить, какой из них использовать. В вашем случае класс Meta присутствует в Namespace.Model, а также Umbraco.Web.PublishedContentModels. Вы можете изменить файл Meta.cshtml , чтобы он ссылался на правильный класс Meta, используя полное имя класса, например, так.

@model Namespace.Model.Meta
...