asp.net母板使用注意

简介:

 1.母板中的路径问题

如果你使用了母板,同时母板里面又使用了和“路径”有关的标签,比如

头部:

<script type="text/javascript" src="scripts/jquery.js"></script>

<link type="text/css" rel="stylesheet" href="styles/common.css" />

body:

<img src="images/logo.png" alt="****有限公司" />

<a href="about/index.aspx">关于本站</a>

这时候你要注意了,你得看看你的aspx文件层次是否对应到母板里的路径结构,比如aspx存在不同的目录嵌套:

如:

根:default.aspx

下级:

根/about/default.aspx

根/job/list.aspx

。。。。

这种情况要求你的母板里路径不能是死的。

那么怎么办呢?

 

大家知道有个~/指的就是项目的跟路径位置,

但是需要服务端控件支持,而我们的<a>,<img>这里不是服务器控件,好在有个runat="server"能够转化。

于是

 

<img src="~/images/logo.png" alt="****有限公司" runat="server" />

<a href="~/about/index.aspx" runat="server">关于本站</a>

这是绝对路径方式,当然也可以用../的相对路径方式。

但是要注意服务端控件的相对路径方式相对项目本身而言的!!这样不必你关心将来的部署,只管好项目的目录层次就OK了。

 

你也可以用<asp:***>的服务器控件。

如果不想用服务器控件,也有个办法解析"~/"的,那就是Page.ResolveUrl()和Page.ResolveClientUrl()

区别是ResolveUrl解析为跟路径方式/aaa/bb/aa/**

如果网站或者测试开发中一般都是在虚拟目录里工作,所以这里不用这个版本。

下面代码:

<link type="text/css" rel="stylesheet" href="<%=Page.ResolveClientUrl("~/") %>styles/common.css" />

<script type="text/javascript" src="<%=Page.ResolveClientUrl("../") %>scripts/jquery.js"></script>

这个是../呵呵。

我问个问题,这里的"../"是相对于生成的aspx页面,还是当前这个母板文件?

答案是:相对于母板这个文件,因为这个是对应项目而言的相对路径。

<img src="../images/logo.png" alt="****有限公司" runat="server" />

<img src="../images/logo.png" alt="****有限公司"/>

这两个里面的"../"呢?

 

答案是:runat的那个服务器控件对项目而言的相对路径,下面那个是死的,对各自的aspx文件而已,实际中谨慎使用。

总之,我们应该养成母板里用到路径时而立马想到上面的灵活方式,考虑是用服务器控件还是方法解析。

 

 




 本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/473621,如需转载请自行联系原作者

相关文章
|
JavaScript 前端开发 .NET
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
38 7
|
2月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
54 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
46 0
|
3月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
3月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
120 0
|
6月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
189 0
|
6月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
78 0
|
6月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
328 5
|
6月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界