c # «x» не содержит определения «y» - PullRequest
0 голосов
/ 12 октября 2018

У меня возникли некоторые проблемы, связанные с моим начальным уровнем понимания C # и ООП.Но я не смог понять, что я делаю неправильно, выполнив поиск ответов.

Моя модель - KeyVisualBlock.cs:

[Display(Order = 90,
GroupName = SystemTabNames.Content)]
[AllowedTypes(typeof(FormContainerBlock))]
public virtual ContentReference ContactForm { get; set; }

Мой контроллер - KeyVisualBlockController.cs:

using System.Web.Mvc;

using Example.Site.Models.Blocks;
using Example.Site.Models.Pages;
using Example.Site.Models.ViewModels;

using EPiServer;
using EPiServer.ServiceLocation;
using EPiServer.Web;
using EPiServer.Web.Mvc;

namespace Example.Site.Controllers
{
    public class KeyVisualBlockController : BlockController<KeyVisualBlock>
    {
        public override ActionResult Index(KeyVisualBlock currentBlock)
        {
            var contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>();
            var startPage = contentLoader.Get<StartPage>(SiteDefinition.Current.StartPage);

            KeyVisualBlockViewModel model = new KeyVisualBlockViewModel
            {
                SearchLink = startPage.SearchPageLink,
                CurrentKeyVisualBlock = currentBlock
            };

            return PartialView("KeyVisualBlock", model);
        }

    }

    public class KeyContactBlockController : BlockController<ContactBlock>
    {
        public override ActionResult Index(ContactBlock currentBlock)
        {
            ContactBlockViewModel model = new ContactBlockViewModel(currentBlock);

            return PartialView("~/Views/Shared/Blocks/ContactBlock.cshtml", model);
        }
    }
}

My View Модель:

using Example.Site.Models.Blocks;

using EPiServer;
using EPiServer.Core;
using EPiServer.Forms.Implementation.Elements;
using EPiServer.ServiceLocation;
using System;

namespace Example.Site.Models.ViewModels
{
    public class KeyVisualBlockViewModel
    {
        public PageReference SearchLink { get; set; }
        public KeyVisualBlock CurrentKeyVisualBlock { get; set; }
    }

    public class KeyContactBlockViewModel
    {
        public KeyContactBlockViewModel(ContactBlock KeycurrentBlock)
        {
            IContentLoader contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>();

            this.KeyCurrentBlock = KeycurrentBlock;

            if (!ContentReference.IsNullOrEmpty(this.KeyCurrentBlock.ContactForm))
            {
                this.ContactFormID = contentLoader.Get<FormContainerBlock>(this.KeyCurrentBlock.ContactForm)?.Form?.FormGuid;
            }
        }

        public ContactBlock KeyCurrentBlock { get; set; }
        public Guid? ContactFormID { get; set; }
    }
}

И, наконец, мой View:

<header>
    <h2 id="@(string.Format("formWrapperHeader_{0}", Model.ContactFormID))"
        data-header-success-message="@Model.KeyCurrentBlock.SuccessHeadline">
        @Html.PropertyFor(x => x.KeyCurrentBlock.Headline)
    </h2>
</header>

Я получаю следующую ошибку:

KeyVisualBlockViewModel не содержит определения для KeyCurrentBlock и нет доступного метода расширения KeyCurrentBlock, принимающего первый аргумент типа «KeyVisualBlockViewModel» (вы пропустили директиву using или ссылку на сборку?)

То, что я пытаюсь сделать, это добавить возможность включать форму в наш KeyVisualBlock, чтобы наши редакторы могли включать формы в разделы заголовка страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...