相册管理说白了就是文件夹管理,因此要用到命名空间using System.IO;

一、先来做相册管理,添加相册我就不做了,就是添加文件夹,这里主要做一下相册的显示。相册在页面上显示,需要一张图片,可以到网上下载,如:

1、Controller控制器

 public ActionResult album()
{
//相册路径,根据自己网站情况设定
string path = "/Content/image/album/";
List<string> folder = new List<string>();
string[] a = Directory.GetDirectories(Server.MapPath(path));
for (int i = ; i < a.Length; i++)
{
DirectoryInfo di = new DirectoryInfo(a[i]);
folder.Add(di.Name);
}
ViewBag.folder = folder ;
return View();
}

先读出路径下所有的文件夹,然后放入到ViewBag中,传递到视图

2、view视图(album)

<div id="body">
@{int i = ;}
@foreach (var f in ViewBag.folder)
{
<div style="float: left; width: 20%; margin: 20px 0; text-align: center;">
<a href='@Url.Action("ImagesManage", "default", new { folderName = @f })'>
<img src='@Url.Content("~/Content/images/folder-64.gif")' width="" height="" alt='@f'/></a>
<br />
@f
</div>
if (++i % == )
{
<div style="clear: both;">
</div>
}
}
<div style="clear: both;">
</div>
</div>

将文件夹在页面上显示,每行显示5个文件夹。文件夹图标大小为80*80,点击文件夹后进入图片管理页面(ImageManage),并将文件夹名称传递到下一级页面。

3、显示效果

二、图片管理

1、Controller控制器

 public ActionResult ImagesMangage(string folderName)
{
string path = "/Content/image/album/"+folderName+"/";
List<string> files = new List<string>();
string[] img = Directory.GetFiles(Server.MapPath(path)); for (int i = ; i < img.Length; i++)
{
FileInfo fi = new FileInfo(img[i]);
files.Add(path+fi.Name);
}
ViewBag.files = files;
return View(); }

通过上一级页面传递过来的文件夹名称,得到文件的路径。然后放入到ViewBag中,传递到视图。

2、view视图(ImageManage)

<div id="body">
@{int i = ;}
@foreach (var f in ViewBag.files)
{
<div style="float: left; width: 130px; margin: 15px 5px; text-align: center;">
<a href='@f'>
<img src='@f' style="width:120px;height:120px" alt='@f'/></a>
<br />
<a href="#" name="del" id='@f'>删除</a>
</div>
if (++i % == )
{
<div style="clear: both;">
</div>
} }
<div style="clear: both;">
</div>
</div>

图片以120*120大小显示,没有另外生成缩略图。也可以去找一些js插件来显示图片。

3、显示效果

三、最后简单实现一下图片的删除。上传就不做了。

在视图(ImageManage)上添加jquery代码:

<script type="text/javascript">
$(function () {
$("[name='del']").click(function () {
if (confirm("确定要删除此相片?")) {
var imgName = $(this).attr("id");
var div = $(this).parent();
$.post("/default/delImg", { imgName: imgName },
function ()
{ $(div).remove(); }
);
}
});
}); </script>

通过jquery+ajax实现无刷新删除图片。

在对应的控制器(default)上,添加一个删除图片的action

  public void delImg(string imgName)
{
if (Request.IsAjaxRequest())
{
string imgUrl = Server.MapPath(imgName);
FileInfo fi = new FileInfo(imgUrl);
if (fi.Exists)
fi.Delete();
}
}

整个项目相当简单和粗糙,只是实现了相册的显示、图片的显示和删除,没有实现相册的新建和图片的上传,有兴趣的朋友自己去完善。

MVC3学习:实现简单的相册管理和图片管理的更多相关文章

  1. JavaScript学习笔记——简单无缝循环滚动展示图片的实现

    今天做了一个简单的无缝循环滚动的实例,这种实例在网页中其实还挺常见的,下面分享一下我的学习收获. 首先,无缝滚动的第一个重点就是——动.关于怎么让页面的元素节点动起来,这就得学明白关于JavaScri ...

  2. JMeter学习工具简单介绍

    JMeter学习工具简单介绍   一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态 ...

  3. Salesforce LWC学习(四) 父子component交互 / component声明周期管理 / 事件处理

    我们在上篇介绍了 @track / @api的区别.在父子 component中,针对api类型的变量,如果声明以后就只允许在parent修改,son component修改便会导致报错. sonIt ...

  4. flutter最简单轻量便捷的路由管理方案NavRouter

    大家好,我是CrazyQ1,今天给大家推荐一个路由管理方案,用的非常不错的,叫nav_router. 项目地址是:https://github.com/fluttercandies/nav_route ...

  5. <转载>内存管理内幕-动态分配的选择、折衷和实现 对malloc内存分配有个简单的描述,对内存管理有个大致的说明

    这篇文章看后感觉不错,和我在glibc下的hurdmalloc.c文件里关于malloc的实现基本意思相同,同时,这篇文章还介绍了一些内存管理方面的知识,值得推荐. 原文链接地址为:http://ww ...

  6. Linux学习总结(十二)—— CentOS用户管理:创建用户、修改用户、修改密码、密码有效期、禁用账户、解锁账户、删除用户、查看所有用户信息

    文章首发于Linux学习总结(十二)-- CentOS用户管理,请尊重原创保留原文链接. 创建用户 useradd -g webadmin -d /home/zhangsan zhangsan pas ...

  7. Linux学习之RPM包管理-rpm命令管理(十六)

    Linux学习之RPM包管理-rpm命令管理 目录 简介 RPM包依赖性 包全名与包名 rpm软件包安装 rpm软件包卸载 升级降级rpm软件包 rpm软件包的查询 rpm软件包校验 简介 RPM是R ...

  8. MVC3学习:利用mvc3+ajax实现全选和批量删除

    本例数据库操作使用EF code first; 先利用mvc自带的模板,先生成一个list视图,然后再手动添加复选框和删除按钮 <table> <tr> @*在标题行添加一个全 ...

  9. git学习(4)远程库和分支管理

    git学习(4)远程库和分支管理 1.1建立本地git库和远程库联系 我使用的是GitHub上的库,首先在GitHub上新建一个库,在建立与远程库的联系之前需要建立ssh key.建立ssh key可 ...

随机推荐

  1. .Net 导出Excel时设置单元格的格式为文本类型

    <td style= 'vnd.ms-excel.numberformat:@ ' align='right'>" & Format(Val(rowTitle.Item( ...

  2. 常见笔记本进入bios方法

    联想 y510p ->F2 ThinkPad E431 -> Fn + F1

  3. IP和网段及子网掩码基础知识

    IP地址由网络号和主机号两部分组成,网络号的最高位必须是"0",IP地址和子网掩码求"与"算出网络地址,只有网络地址相同才可直接通信,否则需要借助路由. 主机标 ...

  4. Django-配置、静态文件与路由

    -----配置文件 1.BASE_DIR BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))   2.DEBU ...

  5. BAT的真的适合创业团队吗?

    平时在公司扮演一个逗比得角色和亲爱的们友好相处的我根本不愿意去思考这么深入的课题.本来在上一家公司就涉及的太深,心爱的一条小产品线被咔掉后心疼不已.只想深入研究技术不问世事了.怎奈何突然有一天说要招一 ...

  6. CentOS 5.5 防火墙开启、关闭以及开放指定端口

    之前有讲过公司新买的服务器使用的是CentOS5.5, 部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页. 因为以前部署在Win Se ...

  7. js去除字符串中的空格

    //去除空格 function Trime(string){ return string.replace(/\s/ig,""); }

  8. hdu 5093 放置战舰 二分图匹配

    http://acm.hdu.edu.cn/showproblem.php?pid=5093 给定一个MxN大小的图,有3种点,冰山.浮冰.海.现在希望能在图中放置尽可能多的船.船的四个方向上不能有其 ...

  9. HDU3572构造图的模型

    第一次面对建模的图,也映照了我以前想的算法不是重点,问题的转化才是重点 Description: N个任务,M台机器,对于每一个任务有p,s,e表示该任务要做p个时长,要从[s,……)开始,从(……e ...

  10. [zjoi2010]cheese

    题目: 贪吃的老鼠(cheese.c/cpp/pas/in/out) 时限:每个测试点10秒 [问题描述] 奶酪店里最近出现了m只老鼠!它们的目标就是把生产出来的所有奶酪都吃掉.奶酪店中一天会生产n块 ...