超级简单的照片画廊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里打 ...
随机推荐
- 索引对单表查询的影响(Cost和consistent gets)
前提:使用system账户登录sql plus. 建表: SQL> create table t2 as select * from dba_objects; 表已创建. 已用时间: 00: 0 ...
- Tomcat cluster方案共享session配置成功,yeah....
后继版本:https://www.cnblogs.com/xiandedanteng/p/12143112.html 参考网文: 1.Tomcat官方文档 2.https://blog.51cto.c ...
- AMQP 概论
AMQP 是应用层协议的一个开放标准,为面向消息的中间件设计.基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制.目标是实现一种在全行业广泛使用的标准消 ...
- python基础二(list,tuple元祖、dic字典,字符串)
一.列表list 1.list定义 列表即数组 ,list或array..列表中的每个元素都有自己的编号,从0开始,编号也可叫做下标,角标,索引.最后一个元素的下标也可用-1表示.: list定义时, ...
- Effective Objective-C 的读书笔记
本文主要是摘录了 <Effective Objective-C 2.0>一书中提到的编写高质量iOS 代码的几个方法. 1 熟悉Objective -C 1.1 OC 起源 OC 为C语言 ...
- apche编译安装
常见的网页类型:htm,html,shtml,stm.php,asp,aspx,shtm,jsp等等Apache本事只处理静态页面,处理动态页面需要使用libphp5.so这个模块去工作,编译php也 ...
- ES6 数组方法库
文章目录 多维数组降维成一维数组 reduce() 回调 flat() 多维数组降维成一维数组 reduce() var arr1 = [[0, 1], [2, 3], [4, 5]]; var ar ...
- 刷题 [网鼎杯 2018]Fakebook
解题思路 首先登陆页面发现是这样的: 查看源码 源码很正常,也没有什么特别的 web目录扫描 我用的是dirmap工具扫描,扫描结果保存在一个txt文件中,结果可知没什么后台. robots.txt ...
- PHAR伪协议&&[CISCN2019 华北赛区 Day1 Web1]Dropbox
PHAR:// PHP文件操作允许使用各种URL协议去访问文件路径:如data://,php://,等等 include('php://filter/read=convert.base64-encod ...
- chrome禁止三方cookie,网站登录不了怎么办
背景 新版chrome(80+)浏览器默认屏蔽所有三方cookie已经不是什么新闻了,具体原因这里不去深究,有大量相关文章介绍,由于目前许多网站都依赖三方cookie,因此该特性的推出还是造成了一些的 ...