aspnet使用母版页时,js出现的问题
今天在开发系统时,用到母版中引用js文件,
先后试了几个方法,比如:使用link 引用js,代替原来的直接的script引用。
但是不行。
<scriptlanguage="javascript" src="~/CustomControls/Alert/Alert.js" type="text/javascript" ></script>
ASP.NET对“~”不进行解释,
网上搜索了一下有2中解决方案:
1、把masterpage中的所有相对路径用ResolveUrl()这个方法处理一下就行了,前台或或后台代码中都可以,比如前台中:
<a href='<%=ResolveUrl("default.aspx")%>'>首页</a>
2、在母版页面后台代码:
protected override void Render(HtmlTextWriterwriter)
{
StringWriter stringWriter = newStringWriter();
HtmlTextWriter htmlWriter = newHtmlTextWriter(stringWriter);
base.Render(htmlWriter);
string html =stringWriter.ToString();
#region 转换相对路径
MatchCollection collection =Regex.Matches(html,"<(a|link|img|script|input|form).[^>]*(href|src|action)=(\\\"|'|)(.[^\\\"']*)(\\\"|'|)[^>]*>",RegexOptions.IgnoreCase);
foreach (Match match in collection)
{
if(match.Groups[match.Groups.Count - 2].Value.IndexOf("~") != -1)
{
string url =this.Page.ResolveUrl(match.Groups[match.Groups.Count - 2].Value);
html =html.Replace(match.Groups[match.Groups.Count - 2].Value, url);
}
}
#endregion
writer.Write(html);
}
引用中增加:
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
ok!!!