在自定义母版页上运行C#代码

时间:2016-02-05 11:50:07

标签: c# sharepoint sharepoint-online

我有两个文件,如果页面上没有特定的get请求,我只想包含这些文件。

这是我在自定义母版页上使用的代码:

<% if(Request.QueryString["edit"]!=null){ %>

    <link rel="stylesheet" href="/SiteAssets/SP2013Accordion/SP2013Accordion.css" />
    <script src="/SiteAssets/SP2013Accordion/SP2013Accordion.js" type="text/javascript"></script>

<% } %>

但是我收到了这个错误:

  

处理/sites/develop_apps/phiterpub/_catalogs/masterpage/newseattle.master时出错。此文件中不允许使用代码块。

所以,显然我不能在这个页面上运行C#代码。

我知道之前有人问过,但也许只有一种简单的HTML方法可以做到这一点......

有没有办法运行这个或类似的功能?

1 个答案:

答案 0 :(得分:2)

我在上面的场景中提出了一个解决方案,你不需要在母版页上编写内联c#代码。在这种情况下,这样做也不是优雅的。

  

你可以做的是使用javascript获取查询字符串值“edit”,然后有条件地加载你的css和你的js文件。

注意getQueryStringParameterByName这是一个必须编写的方法来提取查询字符串值。

var edit = getQueryStringParameterByName('edit'); 
if(edit != '')
{
  loadcssFile('/SiteAssets/SP2013Accordion/SP2013Accordion.css');
  loadjsFile('/SiteAssets/SP2013Accordion/SP2013Accordion.css');
}

加载css文件的方法

 function loadcssFile(cssfile){
 loadcss = document.createElement('link')    
 loadcss.setAttribute("rel", "stylesheet")
 loadcss.setAttribute("type", "text/css")    
 loadcss.setAttribute("href", cssfile) 
 document.getElementsByTagName("head")[0].appendChild(loadcss)
 }

和加载js的方法

 function loadjsFile(scriptFile){     
 loadScript = document.createElement('SCRIPT')
 loadScript.setAttribute("charset", "utf-8")
 loadScript.setAttribute("type", "text/javascript")    
 loadScript.setAttribute("src", scriptFile)
 document.getElementsByTagName("head")[0].appendChild(loadScript)
 }