超级简单的照片画廊MVC
介绍 我想在我的个人网站上添加一个简单的图片库,但找不到任何合适的方法来从文件夹而不是数据库中挑选图片。也许我应该看得更仔细些!尽管如此,下面是我实现的一个图片库,它从一个或多个文件夹中选取图像,并以尽可能简单的方式实现。 背景 我已经在Visual Studio 2017实现了这个MVC Asp。净4.6.2应用程序。您可以自由地适应所选择的框架版本,并根据需要提取到web-forms应用程序中。我还没有测试过这种情况,但是通过一些小的插件,它应该可以工作。 还请注意,该应用程序使用jquery和引导程序,但没有其他内容。 使用的代码 好了,我们开始吧! 首先要做的是打开附加的项目并检查代码。在大多数情况下,它是相当直接的,你应该能够提取的比特,以完成工作到您自己的应用程序-这是设计尽可能简单。 怎么回事… 如果您还没有一个应用程序,您希望将图库应用到其中,您应该打开您的Visual Studio选择并创建一个MVC web应用程序。您可以接受默认值,因为它不会影响接下来的操作。 第一件事是创建一个文件夹来存储我们的图像。我把我的名字命名为“Photos”。在这下面,我创建了一个名为“Other”的子文件夹。你可以在主文件夹下创建任意数量的子文件夹,尽管这样做可能会很麻烦。请记住,这是一个简单的解决方案,而不是企业级的图片库解决方案! “Photos”文件夹保存了我所有的默认图片;那些我想立即显示的文件夹,而其他文件夹包含图像的子集或需要钻取才能看到的图像。 现在我们需要一个类来保存所有的图像—我将其命名为“Photos”(显然,我缺乏想象力)。 隐藏,复制Code
public string Path { get; set; }
public string Description { get; set; }
public Photos(string path, string description)
{
Path = path;
Description = description;
}
没什么神奇;我们需要获得其位置的路径和一些描述性文本 接下来,我们需要一种方法将图像放入模型(类)中,以便将适当的图像集传递给视图。 一个合理的方法是创建一个继承模型列表的类,如下所示: 隐藏,复制Code
public class PhotoModel : List<Photos>
在构造函数中,我们可以导航到一个给定的文件夹并枚举该文件夹中的所有文件。 隐藏,复制Code
public PhotoModel(string folder)
在将文件夹解析为DirectoryInfo对象后,它允许我们枚举文件夹,确保我们只命中给定的文件夹,并且它下面不存在文件夹… 隐藏,复制Code
foreach (var file in di.EnumerateFiles("*.jpg", SearchOption.TopDirectoryOnly))
最后,将每个找到的文件添加到photo & gt;对象与 隐藏,复制Code
var p = new Photos(string.Concat(folder, file.Name), Path.GetFileNameWithoutExtension(file.Name));
Add(p);
为了将所有这些都放到视图中,我们需要向实例化视图的控制器对象添加代码: 打开控制器,添加以下代码: 隐藏,复制Code
public ActionResult Gallery(int id)
{
// Default.
string folder = "~/photos/"; switch (id)
{
case 1:
folder = "~/photos/other/";
break;
case 0:
folder = "~/photos/";
break;
} return View(new PhotoModel(folder));
}
我强调这很简单,因此硬编码到照片文件夹的路径在这里。您可以自由地提取这段代码并使其可配置,或者您认为自己喜欢这样做。在任何情况下,我们必须告诉photomodel>我们希望它从哪条路径获取图像。还要注意,我们向方法传递了一个整数作为id,以告诉它使用哪个文件夹。同样,虽然简单,但也可以将它作为路径的字符串传递-选择。最后,调用视图,传递正确的模型。 视觉上来说… 我们已经讲完了所有的代码,让我们看看视图 首先,我们需要添加一个菜单选项来驱动页面—我们通过在Views/Shared/_Layout.cshtml中添加一行来实现。 隐藏,复制Code
<li>@Html.ActionLink("Gallery", "Gallery", "Home", new { id = 0 }, null)</li>
注意,我们是通过告诉控制器我们想要显示默认图库来预加载的。如果你不这样做,它会变得非常糟糕。 现在在Views/Home下添加一个名为Gallery.cshtml的页面。这需要四件事: 添加css和javascript一种方法来切换文件夹,一种方法来显示所有发现的图像,一种方法来显示单独的文件夹在弹出窗口 我们还需要包含一些css和javascript,它们将设计页面的样式,并赋予我们显示弹出窗口的能力——这些文件称为gallery.css和gallery.js。 您可以自由地检查和修改css,没有什么不可思议的。javascript只是显示一个隐藏的div,将选中的图像弹出到一个新的图像控件中,并在弹出窗口中使用该图像的alt文本作为描述性文本。 注意:如果你不喜欢我在显示模态时将页面涂黑,你可以稍后在galler .css中使用以下行(第26行): 隐藏,复制Code
background-color: rgb(0, 0, 0);
例如,下面给出了一个相当漂亮的黄橙色阴影(在我的屏幕上): 隐藏,复制Code
background-color: rgb(255, 216, 0);
视图的主要部分是foreach循环,它将图像呈现到页面中,并分配来自PhotoModel>的值。类。 下面的描述模态弹出的html片段: 隐藏,复制Code
<div id="divimage" class="modal">
<img class="modal-content" id="modalimg">
<div id="caption"></div>
</div>
就是这样。所附的演示程序应该可以正常工作并可编译。 的兴趣点 它很适合我-如果这不是足够复杂或你需要从数据库加载图像,这个解决方案不适合你。 最后 我确信这可以改进,但它满足了我的要求,因为它的立场,特别是因为它没有花太长的时间,把它拉在一起。享受吧! 历史 初始版和最终版 本文转载于:http://www.diyabc.com/frontweb/news19331.html
超级简单的照片画廊MVC的更多相关文章
- vs2015制作一个超级简单的MVC项目
使用vs2015制作一个超级简单的MVC项目 本文链接:https://blog.csdn.net/qq_40919762/article/details/100705314 直奔主题一,创建一个 ...
- 【Spring】简单的Spring MVC入门例子
前言 测试特性需要搭建一个简单的Spring MVC的例子,遂记录之,只是例子,只为入门者之示例. 版本说明 声明POM文件,指定需引入的JAR. <properties> <spr ...
- JS基础(超级简单)
1 JS基础(超级简单) 1.1 数据类型 1.1.1 基本类型: 1) Number:特别注意:NaN的检测方法:Nan!=NaN;或者使用isNaN方法 2) ...
- 【Spring】搭建最简单的Spring MVC项目
每次需要Spring MVC的web项目测试一些东西时,都苦于手头上没有最简单的Spring MVC的web项目,现写一个. > 版本说明 首先要引入一些包,Spring的IOC.MVC包就不用 ...
- 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销
第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...
- JavaScript,一个超级简单的方法判断浏览器的内核前缀
先说明,此处的方法是说超级简单的方法,不是指代码超级少,而是用非常简单的知识点,只要懂得怎么写JavaScript的行内样式就可以判断. 大家应该还记得JavaScript行内样式怎么写吧?(看来我是 ...
- zw版_Halcon图像交换、数据格式、以及超级简单实用的DIY全内存计算.TXT
zw版_Halcon图像交换.数据格式.以及超级简单实用的DIY全内存计算.TXT Halcon由于效率和其他原因,内部图像采用了很多自有格式,提高运行速度,但在数据交换方面非常麻烦. 特别是基于co ...
- Node.js简单介绍并实现一个简单的Web MVC框架
编号:1018时间:2016年6月13日16:06:41功能:Node.js简单介绍并实现一个简单的Web MVC框架URL :https://cnodejs.org/topic/4f16442cca ...
- 我只知道一点非常简单的关于MVC的验证
我只知道一些非常简单的关于MVC的验证 如题,我只知道一点非常简单的关于MVC的验证,所以如果您接触过MVC的验证,相信也就不用看了,这个且当作是学习笔记吧. 先小讲解一下他基本的五个从Model里打 ...
随机推荐
- 大概是win里最方便快捷的截图+拾色软件——Snipaste
Snipaste 是一个简单而又强大的截图工具,还可以让你将截图贴回到屏幕上!按下 F1 截图快捷键来开始截图,再按 F3贴图快捷键,截图就在桌面置顶显示了.对比文字,对比表格,对比图片,就这么简单! ...
- 用安卓 WebView 做一个“套壳”应用
前言 目前手机应用市场上的 APP 类型主要为以下两种: Native App(原生应用):直接针对平台(Android.iOS 等手机系统)进行开发,属于性能最优的方案,也是开发成本最大的方案. H ...
- ELK入门及基本使用
预备知识-Restful 起源 在没有前后端分离概念之前,一个网站的完成总是“all in one”,在这个阶段,页面.数据.渲染全部在服务端完成,这样做的最大的弊端是后期维护,扩展极其痛苦,开发人员 ...
- Linux系统小知识
换Linux系统快半年了,刚开始总是碰到各种各样的问题,虽然斗解决了,由于没有记录,过一段时间就忘了,故在这里记录一下. 选择国内镜像源: Manjaro有一个很好用的命令rankmirrors.ra ...
- roarctf_2019_easy_pwn
这篇博客主要记录当直接在malloc_hook中直接写入one_gadget不起作用时的一些处理方法.题目附件:https://buuoj.cn/challenges#roarctf_2019_eas ...
- webstorm单标签设置成双标签展开解决iview中col展开问题
大家好!我是木瓜太香,今天给大家带来一个 webstorm 小技巧 场景:有使用过 vue 框架并且使用 iview 做 ui webstorm 做 ide 的同学,可能会遇到一个比较奇怪的问题,iv ...
- 《Head First 设计模式》:组合模式
正文 一.定义 组合模式允许你将对象合成树形结构来表现"整体/部分"层次结构.组合能让客户以一致的方式处理组合对象以及个体对象. 组合对象:包含其他组件的组件. 个体对象(叶节点对 ...
- [LeetCode]面试题 01.06. 字符串压缩
题目 字符串压缩.利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能.比如,字符串aabcccccaaa会变为a2b1c5a3.若"压缩"后的字符串没有变短,则返回原先 ...
- 阿里云docker部署mysql
看完我的上一个博客之后,对centos系统应该有一定的了解,话不多说,接下来我们来在docker容器中部署mysql. 1.下载mysql镜像,因为本人用的5.7版本,你也可以下载最新版,都是可以的 ...
- bash运行脚本的几种方式
转载自https://www.jianshu.com/p/ba6efda13e23 转载地址:http://www.jquerycn.cn/a_8354 bash shell 脚本执行的方法有多种,本 ...