如何为 Sitefinity 10 中的其他动态项目创建内部 URL

How do you create an internal URL to other dynamic items in Sitefinity 10

我想知道如何在后端为项目创建 link。

我已经设置了一个仪表板小部件,它列出了我所有的自定义动态模块项目,但我需要一种方法来通过 URL 在内部制作这些 clickable/editable 而不是导航到在后台手动选择项目。

看起来这依赖于 iFrame 和 Kendo UI 等。有人对此有什么建议吗?

我似乎找不到任何类似过程的提及!

谢谢!

我认为不可能为动态项目创建特定的URL,但您可以创建 JS 函数并在需要时调用此 JS 函数:

function OpenForEdit(data){
    var template = '<iframe id="sfEditingWindowFrame" style="width:100%; height:100%;" frameBorder="0" border="0" src=""></iframe>';
    this.kendoWindow = jQuery("<div>").append(template).kendoWindow(this.windowOptions).data("kendoWindow");
    this.contentFrame = $(this.kendoWindow.wrapper).find("#sfEditingWindowFrame");
    $(this.kendoWindow.wrapper).addClass("sfMaximizedWindowWithIframe");
    this.contentFrame.prop("src", function() {
        var src = "/Sitefinity/Dialog/ContentViewEditDialog?ControlDefinitionName="+data.ControlDefinitionName+"&ViewName="+data.ViewName+"&IsInlineEditingMode=true";
        return src;
    });
    this.kendoWindow.maximize();
    this.kendoWindow.open();
    var that = this;
    this.contentFrame.one("load", function() {
        var frameHandle = that.contentFrame.get(0).contentWindow;
        if (frameHandle) {
            var showMoreActionsWorkflowMenu = true;
            var hideLanguageList = false;
            var commandName, params, key, commandArgument, dataItem;
            var isEditMode = true;
            commandName = "edit";
            params = {
                IsEditable: true
            };
            key = {
                Id: data.ItemId 
            };
            commandArgument = {
                languageMode: "edit",
                language: data.Culture
            };
            dataItem = {
                Id: data.ItemId,
                ProviderName: data.ProviderName
            };
            if (frameHandle.createEditingWindow) {
                frameHandle.createEditingWindow(commandName, dataItem, params, key, commandArgument, function(a, b) { window.location=data.ReturnUrl}, showMoreActionsWorkflowMenu, hideLanguageList);
            }
        }
    });
}

在此函数中,您需要像这样传递对象:

var data = {
    "ItemId": "76a1e9f5-d32e-642d-aa3a-ff0000a20aad",
    "ControlDefinitionName": "Telerik.Sitefinity.DynamicTypes.Model.Contest.ImageBackendDefinition",
    "ViewName": "ImageBackendEditView",
    "ProviderName": "OpenAccessProvider",
    "Culture": "en",
    "ReturnUrl": "/Sitefinity/dashboard"
};

您只需更改此对象中与您的动态项相关的数据。