介绍 我想在我的个人网站上添加一个简单的图片库,但找不到任何合适的方法来从文件夹而不是数据库中挑选图片。也许我应该看得更仔细些!尽管如此,下面是我实现的一个图片库,它从一个或多个文件夹中选取图像,并以尽可能简单的方式实现。 背景 我已经在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的更多相关文章

  1. vs2015制作一个超级简单的MVC项目

    使用vs2015制作一个超级简单的MVC项目   本文链接:https://blog.csdn.net/qq_40919762/article/details/100705314 直奔主题一,创建一个 ...

  2. 【Spring】简单的Spring MVC入门例子

    前言 测试特性需要搭建一个简单的Spring MVC的例子,遂记录之,只是例子,只为入门者之示例. 版本说明 声明POM文件,指定需引入的JAR. <properties> <spr ...

  3. JS基础(超级简单)

    1     JS基础(超级简单) 1.1 数据类型 1.1.1   基本类型: 1)        Number:特别注意:NaN的检测方法:Nan!=NaN;或者使用isNaN方法 2)       ...

  4. 【Spring】搭建最简单的Spring MVC项目

    每次需要Spring MVC的web项目测试一些东西时,都苦于手头上没有最简单的Spring MVC的web项目,现写一个. > 版本说明 首先要引入一些包,Spring的IOC.MVC包就不用 ...

  5. 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销

    第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...

  6. JavaScript,一个超级简单的方法判断浏览器的内核前缀

    先说明,此处的方法是说超级简单的方法,不是指代码超级少,而是用非常简单的知识点,只要懂得怎么写JavaScript的行内样式就可以判断. 大家应该还记得JavaScript行内样式怎么写吧?(看来我是 ...

  7. zw版_Halcon图像交换、数据格式、以及超级简单实用的DIY全内存计算.TXT

    zw版_Halcon图像交换.数据格式.以及超级简单实用的DIY全内存计算.TXT Halcon由于效率和其他原因,内部图像采用了很多自有格式,提高运行速度,但在数据交换方面非常麻烦. 特别是基于co ...

  8. Node.js简单介绍并实现一个简单的Web MVC框架

    编号:1018时间:2016年6月13日16:06:41功能:Node.js简单介绍并实现一个简单的Web MVC框架URL :https://cnodejs.org/topic/4f16442cca ...

  9. 我只知道一点非常简单的关于MVC的验证

    我只知道一些非常简单的关于MVC的验证 如题,我只知道一点非常简单的关于MVC的验证,所以如果您接触过MVC的验证,相信也就不用看了,这个且当作是学习笔记吧. 先小讲解一下他基本的五个从Model里打 ...

随机推荐

  1. java返回树形结构的正确姿势

    业务场景 通常我们前端需要一个树形的导航菜单或者分类菜单,如后台权限管理中的权限树,亦或者下面例子中商城系统的商品分类多级菜单(一般为三级菜单) 数据库设计 数据库设计,采用parentId来指向自己 ...

  2. 前端通过jqplot绘制折线图

    首先需要下载jqplot需要的js与css文件,我已近打包好了,需要的可以下载 接下来导入其中关键的js与css如下, <link href="css/jquery.jqplot.mi ...

  3. 【python开发】迈出第一步,这可能是我唯一一次的Python开发了

    好久没写博了,今天就瞎唠唠吧 背景: 组内有个测试平台,是基于Python2+tornado 框架写的,之前自己维护了一套系统的UIweb自动化代码,现在需要集成进去.这很可能是自己唯一一次基于pyt ...

  4. FZU - 2037 -Maximum Value Problem(规律题)

    Let’s start with a very classical problem. Given an array a[1…n] of positive numbers, if the value o ...

  5. P3311 [SDOI2014]数数 AC自动机+数位DP

    题意 给定一个正整数N和n个模式串,问不大于N的数字中有多少个不包含任意模式串,输出对\(1e^9+7\)取模后的答案. 解题思路 把所有模式串都加入AC自动机,然后跑数位DP就好了.需要注意的是,这 ...

  6. C003:计算球体体积 自行输入球体半径

    程序: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { float sphereRadius; do{ pri ...

  7. The relationship between Sonarcube coverage and code branch

    Once I was asked to enhance the sonarcube coverage of the class:‘jp.co.XXXXp.DltApiHttpRequestRetryH ...

  8. Ajax跨域解决方案大全

    题纲 关于跨域,有N种类型,本文只专注于ajax请求跨域(,ajax跨域只是属于浏览器"同源策略"中的一部分,其它的还有Cookie跨域iframe跨域,LocalStorage跨 ...

  9. oracle之二表的几种类型

    Oracle中表的几种类型 1.表的功能:存储.管理数据的基本单元(二维表:有行和列组成)2.表的类型: 1)堆表:heap table :数据存储时,行是无序的,对它的访问采用全表扫描. 2)分区表 ...

  10. 阿里云服务器外网IP无法访问网站

    1.添加IIS时添加了127.0.0.1的IP监听导致无法访问外网IP 添加IP监听:netsh http add iplisten 127.0.0.1显示IP监听:netsh http show i ...