我希望了解如何从代码隐藏(C#)创建动态asp.net页面。 例如,用户上传名为“flower.jpg”的图片,我希望创建一个名为“flower.jpg.aspx”的自定义动态asp.net页面。 我不知道该怎么做,我真的需要一个方向。
答案 0 :(得分:1)
首先,我认为您不需要创建新页面,如果您使用以下内容,这是一个相当简单的问题:
将所有文件上传到数据库,文件等,并保留对它们的引用
创建一个包含上传元数据的类
答案 1 :(得分:0)
您不应该为每个图像创建aspx页面,因为如果您这样做,则必须将aspx页面放在虚拟目录中,这将导致站点重新启动。
您可以将图像保存到数据库或文件系统,并将图像属性(如扩展名,文件名,大小)存储在数据库中,并有一个用于列出图像的页面和另一个用于查看图像详细信息的页面。
详细信息页面将显示<img src="URL to the Image"/>
标记,该标记将显示图像和其他一些属性。
如果必须拥有带扩展名为.aspx的页面,那么你可以使用路由,如果你使用MVC,你将拥有一个MVC控制器和动作,但你将有一个形状的路由:{controller} / {动作} / {图像}的.aspx
答案 2 :(得分:0)
通过查看您的描述,我认为您要做的是创建一些照片库页面。您可能对这些资源感兴趣:
http://www.codeproject.com/Articles/14290/Simple-Photo-Gallery-With-ASP-NET-2-0 http://weblogs.asp.net/bleroy/a-simple-asp-net-photo-album http://www.codeproject.com/Articles/21075/Gallery-Server-Pro-An-ASP-NET-Gallery-for-Sharing
在图片的web.config setpath中:
<appSettings>
<add key="PicRootPath" value="~/PICStore/"/>
<add key="PicRootDefaultPath" value="~/PicStore/Default/" />
</appSettings>
创建一个类ContentInfoLoader
,例如:
Configuration rootWebConfig =
WebConfigurationManager.OpenWebConfiguration("~/");
if(0<rootWebConfig.AppSettings.Settings.Count)
{
KeyValueConfigurationElement picRootElement =
rootWebConfig.AppSettings.Settings["PicRootPath"];
if(null!=picRootElement)
{
_picRootPath=picRootElement.Value;
}
picRootElement = rootWebConfig.AppSettings.Settings["PicRootDefaultPath"];
if (null != picRootElement)
{
_picRootDefaultPath = picRootElement.Value;
}
}
然后获取图像的方法:
public string[] GetGalleryPaths(string picRootRealPath)
{
if (Directory.Exists(picRootRealPath))
{
return Directory.GetDirectories(picRootRealPath);
}
else
{
return null;
}
}
public string[] GetPhotoList(string galleryName, string picRootRealPath)
{
string galleryPath=picRootRealPath + "\\" + galleryName + "\\pics";
if (Directory.Exists(galleryPath))
{
return Directory.GetFiles(galleryPath,"*.JPG");
}
else
{
return null;
}
}