超级简单的照片画廊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里打 ...
随机推荐
- 【已学完】UGUI Schedule
章节 内容 签到 Unity4.6 New UI(UGUI) 1.UGUI概述与Canvas画布介绍(一) 5月14日 2.Canvas画布介绍(二) 5月14日 3.Text控件 5月14日 4.I ...
- JDK15就要来了,你却还不知道JDK8的新特性!
微信搜「烟雨星空」,白嫖更多好文. 现在 Oracle 官方每隔半年就会出一个 JDK 新版本.按时间来算的话,这个月就要出 JDK15 了.然而,大部分公司还是在使用 JDK7 和 8 . 之前去我 ...
- 【Azure DevOps系列】Azure DevOps构建并发布Nuget程序包
在Azure DevOps中,管道可以用来构建解决方案,O(∩_∩)O哈哈~快万能了,本章主要介绍如何创建Nuget包并且将其发布到Nuget服务器的过程. 前面我创建了一个非常简单的类库,这边我不做 ...
- OpenResty 作者章亦春访谈实录
[软件简介] OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 通过众多 ...
- SpringMVC实例及注解(二)
@RequestMapping()除了修饰方法,还可以修饰类1.类定义处:提供初步的请求映射信息.相对于WEB应用的根目录2.方法处:提供进一步的细分映射信息.相对于类定义处的URL.若类定义处未标注 ...
- 会话技术之 Session
会话技术之 Session 不多废话,先来一个 HelloWorld. Session 有 get 肯定要先有 set . @Override protected void service(HttpS ...
- SpringSecurity中的Authentication信息与登录流程
目录 Authentication 登录流程 一.与认证相关的UsernamePasswordAuthenticationFilter 获取用户名和密码 构造UsernamePasswordAuthe ...
- Mysql业务设计(物理设计)
物理设计 根据所选择的关系型数据库的特点对逻辑模型进行存储结构的设计 物理设计: 定义数据库.表及字段的命名规范 选择合适的存储引擎 为表中的字段选择合适的数据类型 建立数据库结构 定义数据库.表及字 ...
- Linux:配置apache支持php
对apache的主配置文件进行修改 vi /application/apache/conf/httpd.conf 1.增加下面内容 AddType application/x-httpd-php .p ...
- 【小白学PyTorch】9 tensor数据结构与存储结构
文章来自微信公众号[机器学习炼丹术]. 上一节课,讲解了MNIST图像分类的一个小实战,现在我们继续深入学习一下pytorch的一些有的没的的小知识来作为只是储备. 参考目录: @ 目录 1 pyto ...