我有两个文件,如果页面上没有特定的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方法可以做到这一点......
有没有办法运行这个或类似的功能?
答案 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)
}