在创建新文章时,我在Ocrhard CMS v.1.8.1.0中遇到以下错误。
“ /”应用程序中的服务器错误。
传递到词典中的模型项的类型为'Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel',但是此词典需要的模型项的类型为'Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel'。 < / p>
源文件:
\ 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个Web服务器,例如Web01和Web02,这两个服务器都使用来自公共网络位置(\ xyz.xyz.com \ orchard \ Live \ CMS \ Modules)的相同代码,其中一个是Web02的Web服务器一切正常但是在另一个Web服务器Web01中,我无法创建新文章。
注意:我可以登录CMS应用程序,也可以浏览CMS应用程序,但仅在创建新文章时出现问题。
创建新文章URL:
http:// Web01 :5014 / Admin / Contents / Create / FundswireArticle-遇到错误
http:// Web02 :5014 / Admin / Contents / Create / FundswireArticle-运行正常
如果您看到错误消息
字典的类型为'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>
请帮助。谢谢你。