为什么我在 SharePoint 中关闭模式对话框时无法重定向到另一个 URL?

Why I can't redirect to another URL when I close a modal dialog in SharePoint?

SharePoint 中的新功能,我在 SharePoint 2013 中实现特定模式对话框行为时遇到以下问题。

我有以下情况。在一个 Web 部件中,我将另一个 Web 部件打开到模式对话框中(这不是问题)。然后,当模式对话框关闭时,我必须将父页面(而不是关闭的对话框)刷新到另一个 Web 部件中。我正在尝试通过 JavaScript 以这种方式实现此行为:

string javascript = "function openEdit(link) {"         +
                        "var options = {"               +
                                        "url: link,"    +
                                        "dialogReturnValueCallback: Callback"   + 
                                       "};"             +
                        "SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);"  +
                     "}"                                +
                     "function Callback(dialogResult, ret)  {"          +
                        "alert('TEST');"                +
                        "window.frameElement.commitPopup();"            +
                        //"window.location.replace(\"" + linkRed + "\");" +
                        "window.parent.location.herf = 'http://www.google.com'" +

                     "}"                                +
                     "openEdit(\"" + linkPrint + "\");";

ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "CallJS", javascript, true);

如你所见,在我的父webpart中我使用openEdit() JS函数来打开link(由[=的值表示) 22=]link打印 字符串变量(有效)。

我还声明了 回调 函数,当我的模态对话框关闭时调用该函数。它正确地进入了这个 Callback() 函数(我看到它是因为我放置了 alert())但是我希望被重定向到 google.com (或 URL 在另一个 Web 部件上更改此值)但它不起作用。它正在从我打开模式对话框的地方重定向和刷新父页面 window。

为什么?怎么了?我错过了什么?我该如何解决这个问题?

修改代码如下。注意:在您的代码中将“herf”替换为“href”并使用window.location.href重定向其他页面。

var linkPrint = "http://sp2013/sites/team/Lists/Test/EditForm.aspx?ID=1";
string javascript = "function openEdit(link) {" +
            "var options = {" +
                            "url: link," +
                            "dialogReturnValueCallback: Callback" +
                           "};" +
            "SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);" +
         "}" +
         "function Callback(dialogResult, ret)  {" +
            "alert('TEST');" +
            "window.location.href= 'http://www.google.com';" +
         "}" +
         "openEdit(\"" + linkPrint + "\");";

ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "CallJS", javascript, true);