如何解决在与母版页不同的文件夹中显示aspx页时出现问题
| 我有一个使用某些JQuery脚本的网站母版页,当我的网站访问“我的帐户”文件夹中的任何内容时,该页面会加载,但并非没有错误消息,而且会弄乱母版页。如果我从“帐户”文件夹中拉出页面,效果很好。整天试图解决这个问题,但无济于事。感谢提供的任何帮助。谢谢!解决方法
我认为可能存在安全问题
首先确保您在文件中添加了javascript文件的正确实现路径...
和
阅读此内容:为web.config中的特定页面或文件夹设置授权规则
允许匿名用户访问Account.aspx页。
复制
<configuration>
<location path=\"~/Users>
<system.web>
<authorization>
<allow users=\"?\"/>
</authorization>
</system.web>
</location>
</configuration>
, 这将与您指向CSS和JavaScript的链接有关。确保添加\“ ../ \”以使文件夹结构升级。
, 我们实际上没有足够的信息来在此处提供明确的答案-例如,“错误消息”是什么意思?来源是什么?如何显示?最重要的是,它怎么说?如果您取消使用jQuery,会发生什么情况,页面是否按预期显示和运行?
除此之外,要说明\'med up up MasterPage \',我假设您的Account文件夹通过web.config的authorization
部分具有受限的访问权限。可以对其进行调整以允许访问某些资源。在“ 1”部分中,您可能会遇到以下情况:
<authorization>
<deny users=\"?\"/>
<allow users=\"*\"/>
</authorization>
上面的代码将锁定对属于此范围之内的所有文件的访问。自然,您的登录页面将可以访问,但可能无法访问CSS文件和图像之类的资源-要允许尚未通过身份验证的用户访问这些文件,您可以配置自定义location
,如下所示:
<location path=\"pathToResources\">
<system.web>
<authorization>
<allow users=\"?\"/>
</authorization>
</system.web>
</location>
, 好了,ASP.NET从页面的“观点”解释相对链接,因此,如果页面位于文件夹中,则母版页面相对链接将不再起作用。
这是我使用的解决方案,将您的头部内容包装在一个自定义控件中,该控件将进行重新设置:
<asp_custom:RebasingContainer ID=\"mainRebase\" runat=\"server\">
</asp_custom:RebasingContainer>
并使用runat = server并像这样使用它们:
<link rel=\"stylesheet\" type=\"text/css\" href=\"~/css/reset.css\"/>
请注意\“〜\”,它是ASP.NET \“从root \”路径。
对于控件,请使用以下命令:
[ControlBuilder(typeof(RebasingContainerBuilder)),Designer(\"System.Web.UI.Design.ControlDesigner,System.Design,\" +
\"Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a\"),ConstructorNeedsTag(false)]
public class RebasingContainer : HtmlGenericControl
{
public RebasingContainer()
{
}
protected override void RenderBeginTag(System.Web.UI.HtmlTextWriter writer)
{ /*doesn\'t render it\'s own tag*/ }
protected override void RenderEndTag(System.Web.UI.HtmlTextWriter writer)
{/*doesn\'t render it\'s own tag*/}
}
该控件使用以下控件生成器:
public class RebasingContainerBuilder : ControlBuilder
{
public override bool AllowWhitespaceLiterals()
{
return false;
}
public override Type GetChildControlType(string tagName,System.Collections.IDictionary attribs)
{
if (string.Equals(tagName,\"link\",StringComparison.OrdinalIgnoreCase))
{
return typeof(HtmlLink);
}
if (string.Equals(tagName,\"script\",StringComparison.OrdinalIgnoreCase)
&& attribs.Contains(\"src\"))
{
//only rebase script tags that have a src attribute!
return typeof(HtmlScript);
}
return null;
}
}
脚本在哪里:
public class HtmlScript : HtmlGenericControl
{
public HtmlScript() : base(\"script\") { }
public HtmlScript(string tag) : base(tag) { }
public string Src
{
get
{
return this.Attributes[\"src\"];
}
set
{
this.Attributes[\"src\"] = value;
}
}
protected override void RenderAttributes(HtmlTextWriter writer)
{
Src = ResolveClientUrl(Src);
base.RenderAttributes(writer);
}
}
在web.config中注册客户变基控件,就可以开始了。例如:
<add assembly=\"__code\" namespace=\"CustomControls\" tagPrefix=\"asp_custom\" />
如果您使用AppCode文件夹。
该解决方案将为您提供运行时以及对分离的母版页和简单网页的设计时支持。
, 只需使用:
将/放在js之前就可以了。
<script src=\"/js/jquery.js\" type=\"text/javascript\"></script>
从这里引用:
当母版页位于根文件夹中时,在子文件夹中使用JQuery
, 当子文件夹中有javascript或jQuery且根文件夹中的页面以及子文件夹中的某些页面时,请执行以下操作:在母版页中为每个javascript文件添加两个链接:
例如:
<script src=\"Scripts/jquery.js\" type=\"text/javascript\"></script>
<script src=\"../Scripts/jquery.js\" type=\"text/javascript\"></script>
工作原理:子文件夹中的页面将被引用到带有../
的链接,即
<script src=\"../Scripts/jquery.js\" type=\"text/javascript\"></script>
根文件夹中的页面将引用不带“ 14”的链接,即
<script src=\"../Scripts/jquery.js\" type=\"text/javascript\"></script>
提示:如果一个文件夹或另一个文件夹无法使用,请使用:~/
,/
,../
和./
,其中一个会为您参考。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。