簡體   English   中英

如何強制同一應用程序(DNN / 2sxc)的兩個實例從同一流中讀取?

[英]How to force two instance of the same app (DNN/2sxc) to read from the same stream?

抱歉,如果我的問題很愚蠢,但是我是DNN / 2sxc的新手,我整天都在努力解決這個問題,但沒有成功。

我有同一個應用程序的兩個實例,一個在主頁上,另一個在自己的頁面上,每個實例必須有自己的視圖模板(我使用Razor)。

我的問題是我無法找到使兩個應用程序讀取相同數據的方法,因此其中一個應用程序中的每個添加/編輯/刪除/重新排序都將反映給另一個應用程序,當前每個應用程序都有自己的數據,因此它們在我的情況下是無法使用的。

我嘗試在“數據查詢”中使用“ EntityTypeFilter”並在兩個視圖中使用它(如在News-Simple演示視頻中一樣),它可以正常工作,並且在兩個視圖中都提供了所有項目,但是還有兩個問題附帶此解決方案:

1-現在,我無法使用工具欄(添加/刪除/重新排序等)任何項,如您在此圖像中所看到的,這對我來說是個停滯點,

注意:這是我使用的工具欄:

@foreach(var item in AsDynamic(Data["Default"]))
{
...
@Edit.Toolbar(target: item, actions: "new,edit,replace,remove,moveup,movedown,instance-list")

2-“內容演示項目”在列表中也可見,但是並不是很重要,因為我可以刪除它並使用其中一個真實數據項作為演示項目。

我感謝任何幫助。 謝謝。

因此,您應該知道的第一件事是將內容項用作數據(以進行查詢等)與將其用作分配項(每個模塊實例具有項的子集)時的區別。 這是應該幫助您理解差異的博客: http : //2sxc.org/en/blog/post/12-differences-when-templating-data-instead-of-content

因此,當您需要“手動輕松控制顯示的確切項目,它們的訂購等”時。 您想使用“ content-assigned-to-instance”,它還為您提供了簡單的添加,刪除按鈕,因為這些按鈕實際上並不會刪除任何內容,而只是從模塊實例中刪除分配。

現在您的情況有點特殊,因為您想在另一個模塊實例中重復使用完全相同的集合。 有幾種方法可以執行此操作:

相同視圖

如果它是完全相同的視圖,等等。只需使用DNN功能復制模塊(將模塊添加到另一個頁面)

不同的看法

如果是不同的視圖(可能更緊湊等),您將再次有多個選擇。 第一種是使用dnn功能鏡像/復制,然后僅將if-im放在此頁面上然后以不同方式顯示或注入另一個CSS。 沒有任何開發訣竅,這可能是最簡單的。

較難但可能更好的方法是實際使用新模板,並告訴它以在其他模塊中配置項目的方式來檢索項目-假設模塊1是原始模板,模塊2具有想要的其他模板可以按照與1中給定的完全相同的順序訪問模塊1的項目。這樣做的方法很簡單,但是在模塊2中需要幾行C#代碼。

您需要創建一個新的ModuleDataSource( https://2sxc.org/en/Docs/Feature/feature/4542 )對象,並告訴它它來自模塊1。如果您從未做過,基本上就是您的代碼可以與視覺設計器一樣創建一個查詢,但是您擁有更多控制權-請參見Wiki https://github.com/2sic/2sxc/wiki/DotNet-DataSources-All visual-query-designer中的Module-Data-Source不允許您“切換”模塊(我們可能會在將來添加一個高級設置),但是該對象具有ModuleId屬性,可以在訪問數據之前對其進行設置,使其“切換”到該模塊。 這是Module#2剃須刀中的偽代碼...

var otherModData = CreateSource<ModuleDataSource>();
otherModData.ModuleId = 1;

foreach(var itm in AsDynamic(otherModData["Default"])) {
    ...
}

那應該做的:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM