当前位置: 首页 > news >正文

MVC3学习:实现简单的相册管理和图片管理

相册管理说白了就是文件夹管理,因此要用到命名空间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 = 0; 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 = 0;}
    @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="80" height="80" alt='@f'/></a>
            <br />
            @f
        </div>
       if (++i % 5 == 0)
       {
        <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 = 0; 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 = 0;}
    @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 % 7 == 0)
        {
        <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();
            }
        }

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

 

 

 

相关文章:

  • 彭旭老师《一线员工执行力提升训练》
  • 使用HTML5拍照
  • java基本数据类型
  • 中文锐推榜的优化
  • 如何下载vSphere Big Data Extensions 1.0免费试用版
  • Android深度探索读后感 第四章
  • Android官方教程翻译(4)——启动另一个Activity
  • 动态生成自定义控件ascx如何给ascx传值
  • Android UI(二)DridView的菜单
  • HTML5 预加载
  • SonarQube简介
  • ​虚拟化系列介绍(十)
  • 用Python设计第一个游戏 - 零基础入门学习Python002
  • MFC 消息
  • Asp.net常用的三十多个代码(2)
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • axios 和 cookie 的那些事
  • iOS 颜色设置看我就够了
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JAVA之继承和多态
  • Linux gpio口使用方法
  • Mybatis初体验
  • Selenium实战教程系列(二)---元素定位
  • Spring Boot快速入门(一):Hello Spring Boot
  • Spring核心 Bean的高级装配
  • TypeScript实现数据结构(一)栈,队列,链表
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 近期前端发展计划
  • 译自由幺半群
  • 选择阿里云数据库HBase版十大理由
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (2)(2.10) LTM telemetry
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (C语言)二分查找 超详细
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)计算机毕业设计高校学生选课系统
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (六)c52学习之旅-独立按键
  • (一)Java算法:二分查找
  • (转)【Hibernate总结系列】使用举例
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)http-server应用
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .Net Web项目创建比较不错的参考文章
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET实现之(自动更新)
  • .net下的富文本编辑器FCKeditor的配置方法