• MVC5+EF6 完整教程


    随笔分类 - MVC

    ASP.NET MVC
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_0" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/7402497.html">MVC5+EF6 完整教程17--升级到EFCore2.0</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: EF Core 2.0上周已经发布了,我们也升级到core 文章内容基于vs2017,请大家先安装好vs2017(15.3). 本篇文章主要讲下差异点,跟之前一样的就不再重复了。 文章目录(差异点): 一、新建项目, EF配置/使用 过程的变化 二、身份验证方式的变化(达到类似于原form认证效果)<a href="https://www.cnblogs.com/miro/p/7402497.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/7402497.html" title="permalink">2017-08-21 09:00</a> MiroYuan 阅读(3796) | <a href="https://www.cnblogs.com/miro/p/7402497.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (14)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=7402497" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_1" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/6800358.html">MVC 5 + EF6 完整教程16 -- 控制器详解</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: Controller作为持久层和展现层的桥梁, 封装了应用程序的逻辑,是MVC中的核心组件之一。 本篇文章我们就来谈谈 Controller, 主要讨论两个方面: Controller运行机制简介 Controller数据传递方式 Controller运行机制简介 实现自定义的Controller <a href="https://www.cnblogs.com/miro/p/6800358.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/6800358.html" title="permalink">2017-05-03 09:52</a> MiroYuan 阅读(4115) | <a href="https://www.cnblogs.com/miro/p/6800358.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (5)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=6800358" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_2" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/6671503.html">MVC 5 + EF6 完整教程15 -- 使用DI进行解耦</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 如果大家研究一些开源项目,会发现无处不在的DI(Dependency Injection依赖注入)。 本篇文章将会详细讲述如何在MVC中使用Ninject实现DI 文章提纲 场景描述 &amp; 问题引出 第一轮重构 引入Ninject 第二轮重构 总结 场景描述 &amp; 问题引出 DI是一种实现组件解耦的设计<a href="https://www.cnblogs.com/miro/p/6671503.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/6671503.html" title="permalink">2017-04-06 08:32</a> MiroYuan 阅读(4976) | <a href="https://www.cnblogs.com/miro/p/6671503.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (8)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=6671503" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_3" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/5759585.html">MVC 5 + EF6 入门完整教程14 -- 动态生成面包屑导航</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 上篇文章我们完成了 动态生成多级菜单 这个实用组件。 本篇文章我们要开发另一个实用组件:面包屑导航。 面包屑导航(BreadcrumbNavigation)这个概念来自童话故事"汉赛尔和格莱特",当汉赛尔和格莱特穿过森林时,不小心迷路了,但是他们发现在沿途走过的地方都撒下了面包屑,让这些面包屑来帮助<a href="https://www.cnblogs.com/miro/p/5759585.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/5759585.html" title="permalink">2016-08-11 08:50</a> MiroYuan 阅读(6331) | <a href="https://www.cnblogs.com/miro/p/5759585.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (14)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=5759585" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_4" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/5541086.html">MVC5+EF6 入门完整教程13 -- 动态生成多级菜单</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 稍微有一定复杂性的系统,多级菜单都是一个必备组件。 本篇专题讲述如何生成动态多级菜单的通用做法。 我们不用任何第三方的组件,完全自己构建灵活通用的多级菜单。 需要达成的效果:容易复用,可以根据model动态产生。 文章提纲 概述要点 &amp;&amp; 理论基础 详细步骤 一、分析多级目录的html结构 二、根据<a href="https://www.cnblogs.com/miro/p/5541086.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/5541086.html" title="permalink">2016-05-30 08:22</a> MiroYuan 阅读(9897) | <a href="https://www.cnblogs.com/miro/p/5541086.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (22)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=5541086" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_5" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/5457141.html">MVC5+EF6 入门完整教程12--灵活控制Action权限</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 大家久等了。 本篇专题主要讲述MVC中的权限方案。 权限控制是每个系统都必须解决的问题,也是园子里讨论最多的专题之一。 前面的系列文章中我们用到了 SysUser, SysRole, SysUserRole 这几个示例表。 我们以此为基础,完成RBAC (基于角色的控制) 的核心功能。 在此给出我的<a href="https://www.cnblogs.com/miro/p/5457141.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/5457141.html" title="permalink">2016-05-04 08:09</a> MiroYuan 阅读(9753) | <a href="https://www.cnblogs.com/miro/p/5457141.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (37)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=5457141" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_6" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/4806199.html">MVC5+EF6 入门完整教程11--细说MVC中仓储模式的应用</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 摘要: 第一阶段1~10篇已经覆盖了MVC开发必要的基本知识。 第二阶段11~20篇将会侧重于专题的讲解,一篇文章解决一个实际问题。 根据园友的反馈, 本篇文章将会先对呼声最高的仓储模式进行讲解。 文章提纲 概述要点 理论基础 详细步骤 总结 概述要点 设计模式的产生,就是在对开发过程进行不断的抽象...<a href="https://www.cnblogs.com/miro/p/4806199.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/4806199.html" title="permalink">2015-09-14 08:49</a> MiroYuan 阅读(18235) | <a href="https://www.cnblogs.com/miro/p/4806199.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (60)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4806199" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_7" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/4518811.html">MVC5+EF6 入门完整教程十</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 本篇是第一阶段的完结篇。 学完这篇后,你应该可以利用MVC进行完整项目的开发了。 本篇主要讲述多表关联数据的更新,以及如何使用原生SQL。 文章提纲 多表关联数据更新 如何使用原生SQL 总结 多表关联数据更新 我们在第四篇文章已经讲过数据的更新了,不过那个是针对单表结构的更新。 这次我们讲下使用E...<a href="https://www.cnblogs.com/miro/p/4518811.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/4518811.html" title="permalink">2015-05-21 09:05</a> MiroYuan 阅读(16048) | <a href="https://www.cnblogs.com/miro/p/4518811.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (32)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4518811" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_8" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/4288184.html">MVC5+EF6 入门完整教程九</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 前一阵子临时有事,这篇文章发布间隔比较长,我们先回顾下之前的内容,每篇文章用一句话总结重点。文章一 MVC核心概念简介,一个基本MVC项目结构文章二 通过开发一个最基本的登录界面,介绍了如何从Controller中获取表单数据文章三 EF的整个开发过程文章四 EF基本的CRUD和常用的HtmlHel...<a href="https://www.cnblogs.com/miro/p/4288184.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/4288184.html" title="permalink">2015-02-12 15:16</a> MiroYuan 阅读(14917) | <a href="https://www.cnblogs.com/miro/p/4288184.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (26)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4288184" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_9" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/4164076.html">MVC5+EF6 入门完整教程八</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 本篇是相对独立的一篇,主要讲解不丢失数据进行数据库结构升级。 前面我们讲解EF功能时(见第三篇文章)已经介绍过一种更新数据库的方式: EF比较model和database,如果两边不一致,程序将会drop and re-create数据库。 本篇文章我们会使用 code first migratio...<a href="https://www.cnblogs.com/miro/p/4164076.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/4164076.html" title="permalink">2014-12-15 08:21</a> MiroYuan 阅读(12388) | <a href="https://www.cnblogs.com/miro/p/4164076.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (23)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4164076" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_10" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/4134241.html">MVC5+EF6 入门完整教程七</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 本篇我们针对表格显示添加一些新功能。 前面我们已经讲解过表格显示数据了,现在我们添加三个常用功能: 对显示结果进行排序、过滤、分页。 文章提纲 理论基础/前置准备 详细步骤 总结 前置准备 – 应用之前样式,增加测试数据 我们对之前的Views à Account à Index.cshtml 进行...<a href="https://www.cnblogs.com/miro/p/4134241.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/4134241.html" title="permalink">2014-12-01 08:46</a> MiroYuan 阅读(13683) | <a href="https://www.cnblogs.com/miro/p/4134241.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (32)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4134241" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_11" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/4102867.html">MVC5+EF6 入门完整教程六</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 本篇我们谈谈分部视图(Partial View)。 上篇文章提到过Partial和Action这两个helper, 本篇文章主要就结合这两个helper来讲解分部视图(Partial View)的应用。 文章提纲 理论基础 详细步骤 总结 理论基础 – 分部视图 Partial View指可以应用于...<a href="https://www.cnblogs.com/miro/p/4102867.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/4102867.html" title="permalink">2014-11-17 09:16</a> MiroYuan 阅读(15060) | <a href="https://www.cnblogs.com/miro/p/4102867.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (27)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4102867" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_12" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/4095165.html">MVC5+EF6 入门完整教程五</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 上篇文章介绍了EF实现CRUD及一些基本的Html Helpers. 这次我们将会对之前的内容进行一些修改和重构: 引入Bootstrap样式,搭建几类共用的模板页,对UI进行一些改造 分类介绍Html Helpers 完善一些功能 文章提纲 理论基础 UI改造详细步骤 总结 理论基础 -- Boo...<a href="https://www.cnblogs.com/miro/p/4095165.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/4095165.html" title="permalink">2014-11-13 15:55</a> MiroYuan 阅读(17303) | <a href="https://www.cnblogs.com/miro/p/4095165.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (37)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4095165" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_13" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/4072870.html">MVC5+EF6 入门完整教程四</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 上篇文章主要讲了如何配置EF, 我们回顾下主要过程: 创建Data Model à 创建Database Contextà创建databaseInitializerà配置entityFramework的context配置节。 对这个过程还有疑问的可以去上篇再看一下。 本次我们就主要讲解 (1) EF...<a href="https://www.cnblogs.com/miro/p/4072870.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/4072870.html" title="permalink">2014-11-04 09:58</a> MiroYuan 阅读(29369) | <a href="https://www.cnblogs.com/miro/p/4072870.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (61)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4072870" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_14" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/4053473.html">MVC5 + EF6 完整入门教程三</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 期待已久的EF终于来了。 学完本篇文章,你将会掌握基于EF数据模型的完整开发流程。 本次将会完成EF数据模型的搭建和使用。 基于这个模型,将之前的示例添加数据库查询验证功能。 文章提纲 概述 &amp; 要点 详细步骤 总结 概述 &amp; 要点 下面是本文要点,正文部分会有详细介绍。 EF架构图 新建基于EF的...<a href="https://www.cnblogs.com/miro/p/4053473.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/4053473.html" title="permalink">2014-10-27 09:38</a> MiroYuan 阅读(60338) | <a href="https://www.cnblogs.com/miro/p/4053473.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (135)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4053473" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_15" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/4040602.html">MVC5 + EF6 入门完整教程二</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 从前端的UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端UI的部分。 ASP.NET MVC抛弃了WebForm的一些特有的习惯,例如服务器端控件,ViewState这些东西,让Web回归原始的状态,Web是什么样子就是什么样子。而谈到一个Web App<a href="https://www.cnblogs.com/miro/p/4040602.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/4040602.html" title="permalink">2014-10-21 16:01</a> MiroYuan 阅读(35044) | <a href="https://www.cnblogs.com/miro/p/4040602.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (35)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4040602" rel="nofollow">编辑</a></div>
    		</div>
    	
    		<div class="postSeparator"></div>
    	
    		<div class="entrylistItem">
    			<div class="entrylistPosttitle"><a id="CategoryEntryList1_EntryStoryList_ctl00_Entries_TitleUrl_16" class="entrylistItemTitle" href="https://www.cnblogs.com/miro/p/4030622.html">MVC5 + EF6 入门完整教程</a></div>
    			<div class="entrylistPostSummary"><div class="c_b_p_desc">摘要: 第0课 从0开始 ASP.NET MVC开发模式和传统的WebForm开发模式相比,增加了很多"约定"。 直接讲这些 "约定" 会让人困惑,而且东西太多容易忘记。 和微软官方教程不同,笔者尽量不用脚手架,从空白框架开始,一步一步添加功能,每次添加的东西刚好够用,让大家能真正能用起来,理解每一个过程。<a href="https://www.cnblogs.com/miro/p/4030622.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>				
    			<div class="entrylistItemPostDesc">posted @ <a href="https://www.cnblogs.com/miro/p/4030622.html" title="permalink">2014-10-17 11:26</a> MiroYuan 阅读(58494) | <a href="https://www.cnblogs.com/miro/p/4030622.html#FeedBack" title="comments, pingbacks, trackbacks">评论 (26)</a>  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4030622" rel="nofollow">编辑</a></div>
    		</div>
    	
    <p>
    
    </p>
    
    </div>
  • 相关阅读:
    Java并发编程 LockSupport源码分析
    [No000010F]Git8/9-使用GitHub
    [No000010E]Git7/9-标签管理
    [No000010D]Git6/9-分支管理
    [No000010C]Git5/9-远程仓库
    [No000010B]Git4/9-时光机穿梭
    [No000010A]Git3/9-创建版本库
    [No0000109]Git2/9-安装Git
    [No0000108]Git1/9-Git简介与入门
    [No000011D].NETCORE1/19-.NET Core 指南
  • 原文地址:https://www.cnblogs.com/owenzh/p/11199104.html
Copyright © 2020-2023  润新知