ASP.NET为usercontrol内的对象标记设置闪存文件路径

ASP.NET为usercontrol内的对象标记设置闪存文件路径,asp.net,user-controls,relative-path,Asp.net,User Controls,Relative Path,我有一个ASP.NET用户控件,我想在其中使用flashplayer运行flash电影。如何正确设置flash电影文件的路径,使其在所有页面中都能正常工作,而不考虑文件夹。ie;它应该在FolderA中的一个页面和FolderASub1中的一个页面(FolderA中)以及根文件夹中的一个页面中工作。我的Flash文件位于根文件夹中名为FlashGallery的文件夹中。我的用户控件位于根文件夹中的一个子文件夹中 我不知道如何在这里使用~因为它(播放flash的对象标记)不是服务器控件。 事实上,

我有一个ASP.NET用户控件,我想在其中使用flashplayer运行flash电影。如何正确设置flash电影文件的路径,使其在所有页面中都能正常工作,而不考虑文件夹。ie;它应该在FolderA中的一个页面和FolderASub1中的一个页面(FolderA中)以及根文件夹中的一个页面中工作。我的Flash文件位于根文件夹中名为FlashGallery的文件夹中。我的用户控件位于根文件夹中的一个子文件夹中

我不知道如何在这里使用~因为它(播放flash的对象标记)不是服务器控件。 事实上,我也不能放置完整的相对路径


有什么想法吗?

您可以使用基于根的路径:/FlashGallery/movie.swf


或者,您可以在代码中生成一个路径字符串,并将其放入aspx文件中,如下所示:

您可以使用基于根的路径:/FlashGallery/movie.swf


或者,您可以在代码中生成一个路径字符串,并将其放在aspx文件中,如下所示:

使用基于域根的绝对路径。而不是使用相对url路径,如

“mymovieplayer.fla”

“./mymovieplayer.fla”

这样做

“/flash/mymovieplayer.fla”


使用基于域根的绝对路径。而不是使用相对url路径,如

“mymovieplayer.fla”

“./mymovieplayer.fla”

这样做

“/flash/mymovieplayer.fla”

仅供参考:我使用此(免费)控件:

您可以使用“~”波浪号来使用站点根目录的相对路径,它将在母版页上工作,即使内容页位于不同的目录中,您也可以这样使用它:

. . .

这是免费的

仅供参考:我使用此(免费)控件:

您可以使用“~”波浪号来使用站点根目录的相对路径,它将在母版页上工作,即使内容页位于不同的目录中,您也可以这样使用它:

. . .


这是免费的

如果您总是知道您的站点将安装到根目录,那么使用基于根目录的路径是可以的,但这是不现实的,也是最佳做法

如果我们可以使用服务器端相对路径前缀~/作为。。。标记,但正如您所知,它不是一个用户控件,所以它只是按原样呈现给客户端。下面是一个技巧,允许您为客户端脚本块指定~/相对路径

我基本上在页面、母版页或控件的代码背后使用VirtualPath类和受保护的方法,这对我来说非常好

方法如下:

protected string GetPageRelativePath(string targetPath)
{
    return VirtualPathUtility.MakeRelative( Request.AppRelativeCurrentExecutionFilePath, targetPath );
}
下面是如何在脚本块中使用~/前缀:

<script type="text/javascript" src='<%=GetPageRelativePath("~/Scripts/MyScript.js") %>'></script>

基本上,您可以将其用于其他src路径,甚至是图像或Flash文件的路径


希望这会有所帮助。

如果您总是知道您的站点将安装到根目录,那么使用基于根目录的路径是可以的,但这并不现实,也不是最佳做法

如果我们可以使用服务器端相对路径前缀~/作为。。。标记,但正如您所知,它不是一个用户控件,所以它只是按原样呈现给客户端。下面是一个技巧,允许您为客户端脚本块指定~/相对路径

我基本上在页面、母版页或控件的代码背后使用VirtualPath类和受保护的方法,这对我来说非常好

方法如下:

protected string GetPageRelativePath(string targetPath)
{
    return VirtualPathUtility.MakeRelative( Request.AppRelativeCurrentExecutionFilePath, targetPath );
}
下面是如何在脚本块中使用~/前缀:

<script type="text/javascript" src='<%=GetPageRelativePath("~/Scripts/MyScript.js") %>'></script>

基本上,您可以将其用于其他src路径,甚至是图像或Flash文件的路径


希望能有所帮助。

但是我的用户控件位于我的建议中rootIn的子文件夹中,在Nick的建议中,根文件夹由首字母“/”-表示,然后添加子文件夹和文件名:“/FlashGallery/movie.swf”没关系。因为您只关心渲染到浏览器的结果路径。您只需要为闪存路径指定一个static。但是,当用户控件位于root中的子文件夹中时,它是如何工作的?我试过了。它没有。我知道使用~会将它放到根目录下。但是是否这样做?浏览器会将/解释为当前页面所在站点的根文件夹。因此/FlashGallery是根目录下的子文件夹。假设授予了为该文件夹中的文件提供服务的权限,您的浏览器将能够加载您的电影。但我的用户控件位于rootIn my suggestion的子文件夹中,在Nick的子文件夹中,根文件夹由首字母“/”表示,然后您添加子文件夹和文件名:“/FlashGallery/movie.swf”,这无关紧要。因为您只关心渲染到浏览器的结果路径。您只需要为闪存路径指定一个static。但是,当用户控件位于root中的子文件夹中时,它是如何工作的?我试过了。它没有。我知道使用~会将它放到根目录下。但是是否这样做?浏览器会将/解释为当前页面所在站点的根文件夹。因此/FlashGallery是根目录下的子文件夹。假设授予了从该文件夹提供文件的权限,您的浏览器将能够加载您的电影。+1如果您知道SWF的路径,但它没有更改,您可以使用绝对URL。您不需要使用“~”,因为它不是服务器端路径+1,如果您知道SWF的路径,并且它不改变您可以简单地使用绝对URL。您不需要使用“~”,因为它不是服务器端路径