Элемент модели, переданный в словарь, имеет тип ...., но для этого словаря требуется элемент модели типа - PullRequest
0 голосов
/ 04 февраля 2019

Я получаю приведенную ниже ошибку в Ocrhard CMS v.1.8.1.0 при создании новых статей.

Ошибка сервера в приложении '/'.

Элемент модели, передаваемый в словарь, имеет тип 'Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel', но для этого словаря требуется элемент модели типа 'Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel'.

Исходный файл: \ xyz.xyz.com \ orchard \ Live \ CMS \ Modules \ Orchard.News \ Views \ Content.Edit.cshtml
Строка: 16

Ошибка источника приСтрока 16:

Line 14:         @if (Model.Content != null) {
Line 15:             <div class="edit-item-content">
Line 16:                 @Display(Model.Content)
Line 17:             </div>
Line 18:         }

Сценарий:

В настоящее время у нас есть 2 примера веб-серверов Web01 и Web02, оба сервера используют один и тот же код из общего сетевого расположения (\ xyz.xyz.com \ orchard\ Live \ CMS \ Modules), на одном веб-сервере Web02 все работает нормально, но на другом веб-сервере Web01 я не могу создать новую статью.

Примечание: Я могу войти в CMSприложение, которое я могу исследовать приложение CMS, но проблема Oтолько при создании новых статей.

Создание URL-адреса новых статей:

http://Web01:5014/Admin/Contents/Create/FundswireArticle - получение ошибки

http://Web02:5014/Admin/Contents/Create/FundswireArticle - работаштраф

1

Если вы видите сообщение об ошибке

словарь имеет тип 'Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel' и требует словарьэлемент модели типа 'Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel' оба одинаковы.

'Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel' 'Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel '

Код ниже для Content.Edit.cshtml Страница:

@using Orchard.ContentManagement
@using Orchard.Core.Contents;


@Html.Partial("Content.SubmitButtons.OrchardNews")

<div class="edit-item">
    <div class="edit-item-primary">
        @if (Model.Content != null) {
            <div class="edit-item-content">
                @Display(Model.Content)
            </div>
        }
    </div>
</div>

Ниже кода для Contrib.ChoiceList.cshtml переопределение страницы из модели Orchard Contrib.ChoiceList в мой пользовательский модуль.

@model Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel
@using System.Web.Mvc
@using FluentNHibernate.Utils
@using Orchard.Utility.Extensions;
@using SelectListItem = System.Web.WebPages.Html.SelectListItem
@{
    //this template override hides the choice list field if there's only single option specified
    var shouldDisplayField = !string.IsNullOrEmpty(Model.Options) && Model.Options.Split(';').Length > 1;
}

<fieldset style="display: @(shouldDisplayField ? "block":"none")">
    <legend>@Model.Name</legend>

    @if( Model.ListMode == "radio" )
    {
        foreach (var option in Model.Options.Split(';'))
        {
            if( string.IsNullOrWhiteSpace(option) )
            {
                <label>@Html.RadioButton("SelectedValue", "", string.IsNullOrWhiteSpace(Model.SelectedValue))<i>unset</i></label>

            }
            else
            {
                <label>@Html.RadioButton("SelectedValue", option, (option == Model.SelectedValue))@option</label>
            }
        }
    }
    else if (Model.ListMode == "dropdown")
    {
        var optionSplits = Model.Options.Split(';');
        var displayNameSplits = Model.DisplayNames.Split(';');

        var items = new List<SelectListItem>();
        for (int i = 0; i < optionSplits.Count(); i++)
        {
            var item = new SelectListItem {Text = displayNameSplits[i], Value = optionSplits[i]};
            items.Add(item);
        }

        @Html.DropDownListFor(m => m.SelectedValue, new SelectList(items, "Value", "Text",  Model.SelectedValue));
        @Html.ValidationMessageFor(m=>m.SelectedValue)
    }
    else if (Model.ListMode == "listBoxes")
    {
        var optionSplits = Model.Options.Split(';');
        var displayNameSplits = Model.DisplayNames.Split(';');
        var selectedValues = Model.SelectedValue == null ? string.Empty : Model.SelectedValue;
        Model.SelectedValues = selectedValues.Split(';').ToList();
        var items = new List<SelectListItem>();
        for (int i = 0; i < optionSplits.Count(); i++)
        {
            var item = new SelectListItem {Text = displayNameSplits[i], Value = optionSplits[i]};
            items.Add(item);
        }

        @Html.ListBoxFor(x => Model.SelectedValues, new SelectList(items, "Value", "Text", Model.SelectedValue), new { Multiple = "multiple" });
    }
</fieldset>

Пожалуйста, помогите.Спасибо заранее.

...