首页 > 解决方案 > 为什么我得到一个 SyntaxError: expected expression, got '<) tryng to perform a redirection click a button into SharePoint webpart?

问题描述

我在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>";

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

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

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。

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

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

标签: c#.netsharepointsharepoint-2013web-parts

解决方案


我认为当您<script>在 OnClientClick 值中使用标签时可能会出错。像这样写:

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();";

推荐阅读