Это вопрос, связанный с этим постом (который также сделан мной)
Все объяснения веб-сайта, который я создаю, находятся по ссылке выше.Пожалуйста, посмотрите там.
При этом я пытаюсь использовать две модели разных типов в бритве, и мне трудно правильно обращаться с директивами, (@using @inherits и всечто), и я получаю ошибки, в которых говорится, что моя пользовательская модель не была привязана к той, которая создается CMS (UmbracoTemplateView).
В процессе размышлений о том, как обойти это, я придумал присваивать @используя директиву для IPublishedContent, таким образом, что-то вроде ниже.Таким образом, UmbracoTemplateView должен быть назначен переменной с гораздо более узкой областью, то есть я должен быть в состоянии избежать вызова этой ошибки.
@model CodeShare.Library.Models.SearchViewModel
@using CodeShare.Web.Controllers
<div class="carousel-inner">
<div class="carousel-item active">
<!--this part uses UmbracoTemplatePage to render the content dynamically-->
@using (UmbracoTemplatePage)
{
var pageSize = 5;
IEnumerable<IPublishedContent> newsPosts = Umbraco.AssignedContentItem.DescendantOrSelf("news").Children.Where(x => x.IsVisible() && x.DocumentTypeAlias == "newsPost").OrderByDescending(x => x.UpdateDate);
var page = 1; int.TryParse(Request.QueryString["p"], out page);
var totalPages = (int)Math.Ceiling((double)newsPosts.Count() / (double)pageSize);
if (page > totalPages)
{
page = totalPages;
}
else if (page < 1)
{
page = 1;
}
}
@foreach (var item in newsPosts.Skip((page - 1) * pageSize).Take(pageSize))
{
var imagid = item.GetPropertyValue("image");
string imgurl = Umbraco.Media(imagid.ToString()).Url;
<a href="@item.Url" class="media">
<img src="@imgurl">
<div class="media-body">
<h5 class="mt-0">@item.Name</h5>
<span>最終更新日: @item.UpdateDate.ToString("yyyy/MM/dd") </span>
</div>
</a>
}
</div>
Здесь я хочу использовать пользовательскую модель, потому что ввод будетсделанный пользователем не в backoffice.
в моем понимании, с помощью этого метода beginform, приведенного ниже, он отправляет эти HiddenFor в качестве набора параметров в метод с именем "SubmitSearchForm" в классе контроллера с именем "SurfaceController"
@using (Ajax.BeginForm("SubmitSearchForm", "Surface", new AjaxOptions()
{
UpdateTargetId = "carousel",
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
}))
@Html.HiddenFor(m => m.DocTypeAliases)
@Html.HiddenFor(m => m.FieldPropertyAliases)
@Html.HiddenFor(m => m.PageSize)
@Html.HiddenFor(m => m.PagingGroupSize)
@Html.TextBoxFor(m => m.SearchTerm)
}
<button id="submit-button">Search</button>
<div class="carousel">
@{ Html.RenderAction("RenderSearchResults", "Surface", new { Model = Model.SearchResults });}
</div>
}
Единственное изменение по сравнению с тем, которое я разместил на нашем.umbraco, - это директива @using при попытке рендеринга из модели, которая имеет вид "UmbracoTemplateView".
Здесь япри получении сообщения об ошибке указывается, что директива, которая может быть назначена здесь директиве @using, должна иметь тип «IDisposable», а UmbracoTemplateView - нет.
Я понимаю, что означает ошибка: UmbracoTemplateView не является нативным типомТаким образом, из .NET необходимо четко указать, когда его можно утилизировать дляу сборщика мусора.Как я могу назначить этот интерфейс?
======================================================================= *=====
добавлено 18/10/2018
Я разделил эти два представления в разных cshtml, но у меня возникла та же проблема на более высоком уровне (я должен назвать этот узел)
Поэтому, когда я отображаю страницу, она будет делегирована как "WebBase.cshtml "=>" Home.cshtml "=>" Детали, для которых требуется UmbracoTemplateView (в cshtml) "&" Детали, для которых требуется настраиваемая модель (в cshtml) ".... .... 1029 *
//I get an error when I put the following two in the same cshtml
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@model CodeShare.Library.Models.SearchViewModel
@using CodeShare.Web.Controllers
@using ClientDependency.Core.Mvc
@{
Layout = "WebBase.cshtml";
}
@* the fun starts here *@
@{Html.RenderPartial("~/Views/Partials/Home/.....cshtml");}
@{Html.RenderPartial("~/Views/Partials/Home/....cshtml");}
@{Html.RenderPartial("~/Views/Partials/Home/.....cshtml");}
<!-- only this "news" part requires custom model by Mr.Paul -->
@{Html.RenderPartial("~/Views/Partials/Home/_News.cshtml");}
@{Html.RenderPartial("~/Views/Partials/Home/....cshtml");}
Как таковыев какой-то момент мне все равно понадобятся две модели разных типов в одном месте