두 개의 필드가있는 UI를 통해 (예 : 모듈이 아닌) 사용자 정의 콘텐츠 유형이 있습니다. 그 중 하나는 ContentItemPicker입니다. 모델의 컬렉션에서 ContentItem에 대한 친숙한 URL을 찾는 것 외에는 프런트 엔드에서 모든 작업을 처리했습니다.과수원 ContentItem의 AutoroutePart 표시 URL
@using Orchard.ContentPicker.Fields
@using Orchard.Utility.Extensions;
@using System.Linq
@using Orchard.ContentManagement;
@using Orchard.Mvc.Html;
@using Orchard.Utility.Extensions;
내가 '가정 것 : 나는 Url.ImageDisplayUrl([ContentItem])
를 사용하는데있어 몇 가지 예를보고 있어요,하지만 그 날이 오류를 제공 다음과 같이 'System.Web.Mvc.UrlHelper' has no applicable method named 'ItemDisplayUrl' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.
상단에 내 using 문
은 그걸 가지고 뭔가 빠졌지 만, 무엇을 알아낼 수없는 것 같아. 내가보기를 짓고 있어요 방법은 다음과 같습니다, 나는려고하고있는 URL은tab.ContentItem.HomepageTab.NavigationItem
떨어져 있습니다 : **
내가 HomepageTab에 대한 클래스 선언이
/** @Model.Items is a collection of my custom content types that were created through the UI **/
foreach (var tab in @Model.Items)
{
var t = new SliderTab
{
DisplayOrder = tab.ContentItem.HomepageTab.DisplayOrder.Value,
ButtonText = tab.ContentItem.HomepageTab.ButtonText.Value,
Description = tab.ContentItem.HomepageTab.Description.Value,
ImageUrl = tab.ContentItem.HomepageTab.Image.Url,
Title = tab.ContentItem.TitlePart.Title,
ContentItem = tab.ContentItem,
TabText = tab.ContentItem.HomepageTab.TabText.Value
};
/** HomepageTab is the custom content type created in the Orchard UI which has a ContentPickerField associated with it. The name on that is NavigationItem, so I just need the friendly URL off of a ContentPickerField's associated ContentItem **/
if (tab.ContentItem.HomepageTab.NavigationItem != null && tab.ContentItem.HomepageTab.NavigationItem.Ids != null)
{
//this is way, super hacky - getting the actual friendly URL would be better
t.NavigateUrl = "/Contents/Item/Display/" + tab.ContentItem.HomepageTab.NavigationItem.Ids[0];
}
tabs.Add(t);
}
** 편집 맨 위는 ContentItem 속성에서 동적 인 tab.ContentItem.HomepageTag
과 상관 관계가 없습니다. 다음과 같이 구성되어 있습니다.
public class HomepageTab
{
public dynamic DisplayOrder { get; set; }
public string ImageUrl { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string ButtonText { get; set; }
public dynamic ContentItem { get; set; }
public string TabText { get; set; }
public string NavigateUrl { get; set; }
public string TabId
{
get { return "t" + this.DisplayOrder.ToString(); }
}
}
생각 하시겠습니까?
'foreach (@ Model.Items의 IContent 탭)'할 수 있습니까? 그러면 형식을 컴파일러에 명시 적으로 지정해야하며, 그러면 사용할 확장 방법을 추측 할 수 있습니다. –
시도했지만 'Orchard.ContentManagement.ContentItem'에 'HomepageTab'에 대한 정의가없고 'Orchard.ContentManagement.ContentItem'유형의 첫 번째 인수를 허용하는 확장 메소드 'HomepageTab'이 없습니다. ' – RubyHaus
' tab.As()' –