【问题标题】:Why I obtain a SyntaxError: expected expression, got '<) tryng to perform a redirection clicking a button into a SharePoint webpart?为什么我得到一个 SyntaxError: expected expression, got '<) tryng to perform a redirection click a button into SharePoint webpart?
【发布时间】:2019-05-11 17:47:58
【问题描述】:

我是 SharePoint(我正在使用 SharePoint 2013)和 .NET 的新手,遇到以下问题。

进入 Web 部件 我有一个按钮,我必须使用 OnClientClick 属性插入 JavaScript 重定向。在我的代码中,我做了这样的事情:

ImageButton btnApplica = new ImageButton();
btnApplica.ToolTip = "Documento in Entrata";
//btnApplica.Click += btnApplica_Click_Scelta_Campi_Etichetta;
btnApplica.OnClientClick = "<script>"
                         + "function() {"
                         + "window.location.href = '" + SPContext.Current.Web.Url + "/MYPROJECTNAME WEBPART/Carica documento.aspx?mode=scelta_campi_facoltativi_etichetta&obj='" +obj 
                         + ";return false;"
                         + "}"
                         + "</script>";


//btnApplica.Click += btnApplica_Click;
//openButton.OnClientClick = "return false;";
btnApplica.ID = "btnEntrata";
btnApplica.ImageUrl = "/_layouts/15/images/myprojectname/Default/Ribbon/DocEntrataRibbon.png";
LinkButton text = new LinkButton();
text.Text = "Documento in Entrata";
text.ID = "btnEntrataTxt";
text.Width = 80;
//text.Click += btnApplica_Click;
//text.Click += btnApplica_Click_Scelta_Campi_Etichetta;
buttondiv.Controls.Add(btnApplica);
buttondiv.Controls.Add(new LiteralControl("<br/>"));
buttondiv.Controls.Add(text);
ribbondiv.Controls.Add(buttondiv);

如您所见,我正在尝试创建“客户端内”重定向,因此我在此按钮上使用了 OnClientClick 属性。我定义了一个简单的 JavaScript 函数来执行以 return false 结尾的重定向,以避免在单击按钮后重新加载整个页面,这个:

btnApplica.OnClientClick = "<script>"
                         + "function() {"
                         + "window.location.href = '" + SPContext.Current.Web.Url + "/MYPROJECTNAME WEBPART/Carica documento.aspx?mode=scelta_campi_facoltativi_etichetta&obj='" +obj 
                         + ";return false;"
                         + "}"
                         + "</script>";

此代码部分有问题,单击我的按钮会发生这种情况:

对正确的 URL 执行 HTTP POST 请求:

http://mymachine:8080/Protocollo/pg/MYPROJECTNAME WEBPART/Carica documento.aspx?mode=ant&obj=17&IsDlg=1

(我在 Firefox 的“网络”选项卡上看到它,在我看来这绝对正确)

但页面已完全刷新(所以我没有获得我期望的部分替换)。

查看 JavaScrip 浏览器控制台,我收到以下错误消息:

SyntaxError: expected expression, got '<'

所以我认为定义我的简单 JavaScript 函数的第二个语句时出了点问题(return false)。

我在做:

+ ";return false;"

因为我附加了 ; 符号来表示前一个语句是完整的(执行重定向的 window.location.href=....)和后面跟着 return false。

我快疯了,我不明白出了什么问题……也许是一些符号或错过了逃脱。

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

【问题讨论】:

  • 我希望 OnClientClick 在标记中转换为 onclick,这需要 JavaScript 代码,而不是 &lt;script&gt; 标记。该错误可能准确地表明,第一个字符 ('

标签: c# .net sharepoint sharepoint-2013 web-parts


【解决方案1】:

我认为当您在 OnClientClick 值中使用 &lt;script&gt; 标记时可能会出错。 像这样写:

btnApplica.OnClientClick = "var ClickMySuperButton = function() {"
                         + "window.location.href = '" + SPContext.Current.Web.Url + "/MYPROJECTNAME WEBPART/Carica documento.aspx?mode=scelta_campi_facoltativi_etichetta&obj='" +obj 
                         + ";return false;"
                         + "}; ClickMySuperButton();";

或在 ascx 页面的某处添加您的脚本:

function ClickMySuperButton(){

};

并像这样在代码隐藏中使用:

btnApplica.OnClientClick = "ClickMySuperButton();";

【讨论】:

    猜你喜欢
    • 2015-11-02
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多