开发环境:VS2013

数据库:SQL Server2008R2

架构:ASP.NET MVC5

开发语言:C#

代码下载链接http://download.csdn.net/detail/u010312811/9789790

数据库数据:

数据库结构:

数据库数据:

 ASP.NET MVC5:

1.创建项目:

新建 “ASP.NET Web应用程序” 项目

选择“MVC”项目,“添加测试单元”作为可选项

项目新建完成,项目的架构如下:

2.新建数据模型

选择:“数据”-->“ADO.NET 实体数据模型”,并为数据连接命名

选择“来自数据库的CodeFirst

设置数据库的连接,最后一定“测试连接”,成功后再点击“确定”

此处的连接设置不推荐修改名字,默认即可

选择希望访问的数据库

点击“完成”后,项目自动完成创建,默认生成的项目结构如下:

对生成的SingersDB文件进行修改,修改后的代码如下:

     public partial class SingersDB : DbContext
     {
         //public SingersDB()
         //    : base("name=SingersDB")
         //{
         //}
         public virtual DbSet<TSinger> TSingers { get; set; }
         public virtual DbSet<T_Music> T_Music { get; set; }
     }

 2.添加图片资源

添加图片资源

3.添加布局页

_BasicPage页生成以后,会添加一些默认的代码:

 <!DOCTYPE html>

 <html>
 <head>
     <meta name="viewport" content="width=device-width" />
     <title>@ViewBag.Title</title>
 </head>
 <body>
     <div>
         @RenderBody()
     </div>
 </body>
 </html>

将布局页代码进行修改,修改之后为:

 <!DOCTYPE html>

 <html>
 <head>
     <meta name="viewport" content="width=device-width,initial-scale=0.1" />
     <title>@ViewBag.Title</title>
     @Styles.Render("~/Content/css")
     @Styles.Render("~/bundles/modernizr")
 </head>
 <body>
     <nav class="navbar navbar-default navbar-fixed-top">
         <div class="container" style="text-align:left;height:25px">
             <div class="navbar-header">
                 <a href="#" class="navbar-brand">龙的音乐</a>
             </div>
             <img src="~/Images/龙.jpg" style="width:50px;height:30px;top:10px;position:fixed" class="img-rounded" alt="Alternate Text" />
             <ul class="nav navbar-nav navbar-right">
                 <li><a href="#"><span class="glyphicon glyphicon-user"></span> 注册</a></li>
                 <li><a href="#"><span class="glyphicon glyphicon-log-in"></span> 登录</a></li>
             </ul>
         </div>
     </nav>
     <div>
         @RenderBody()
     </div>
     @Scripts.Render("~/bundles/jquery")
     @Scripts.Render("~/bundles/bootstrap")
     @RenderSection("scripts", required: false)
 </body>
 </html>

新添加的代码以黄色背景标注:

  • 7~8:引入样式
  • 11~22:导航栏,12~21:导航栏的大小及样式,13~15:添加一行文本,并设置超链接,16:添加一个图片,17~22:添加注册及登录功能
  • 26~28:引入jquery

注:jquery引入一般在body结束之前,所有的标记之后,这样使得页面响应最快

4.添加控制器

此时会新建一个名为SinfersController的控制器,并包含有默认的代码:

修改代码如下:

     public class SingersController : Controller
     {
         SingersDB SingerDB = new SingersDB();
         // GET: Singers
         public ActionResult Index()
         {
             ViewBag.Message = "Index";
             return View();
         }
     }

如此,则SingersController控制器中的Index方法指向一个名为Index的页面。

5.添加(带有布局的)视图页

Views-->Singers文件夹-->添加-->带有布局的MVC5视图页(Razor)

将布局页名称命名为“Index”,对应Controller中的Index方法。

选择之前创建的“_BasicPage.cshtml”布局页

新建成的Index.cshtml中只有一行代码,如下:

 @{
     Layout = "~/Views/Shared/_BasicPage.cshtml";
 }

此时该页面将引用布局页,直接调试,就可以打开Index页面

 6.使用Ajax访问数据库

(1)安装Ajax

(2)编写ajax数据访问的分部页,并命名为:_SingersSearch.cshtml

向_SingersSearch.cshtml中添加代码如下:

 @model IEnumerable<Singers.Models.TSinger>

 <div id="searchresults">
     <ul>
         @foreach (var item in Model)
         {
             <li>@item.SingerName</li>
         }
     </ul>
 </div>

这段代码的作用是遍历获取的数据,将SingerName以列表的形式显示,注意id为:searchresults

(3)在Index中添加Ajax的访问代码

 @{
     ViewBag.Title = "Music Home";
 }
 <div class="panel panel-default">
     <div class="panel-heading">搜索</div>
     <div class="panel-body">
         @using (Ajax.BeginForm("ArtistSearch", "Singer",
             new AjaxOptions
             {
                 InsertionMode = InsertionMode.Replace,
                 HttpMethod = "GET",
                 OnFailure = "searchFailed",
                 LoadingElementId = "ajax-loader",
                 UpdateTargetId = "searchresults",
             }))
         {
             <input type="text" name="name" />
             <input type="submit" value="search" />
             <img id="ajax-loader"
                  src="@Url.Content("~/Images/ajax-loader.gif")"
                  style="display:none" />
         }
         <div id="searchresults"></div>
     </div>
 </div>

 @section Scripts{
 <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
 }

注意,因为此处使用了Ajax,所以需要在页脚27~29处添加对Ajax的引用,但是不建议在模板页引用,这样会使所有的页面加载Ajax,降低网页的访问速度。

  • 7:指明调用SingerController类中的ArtistSearch方法
  • 12:指定数据检索失败的方法,一般使用一个jquery方法
  • 13:指定网页加载中显示一个滚动的图片
  • 14:检索结果放置的目标区域
  • 19~22:只有当数据检索过程中才会显示,并且数据检索完毕后图片消失
  • 27~29:ajax的脚本引用

(4)在控制器中添加代码

     public ActionResult ArtistSearch(string name)
     {
         var singers = GetSingers(name);

         return PartialView("_SingersSearch", singers);
     }

     private List<TSinger> GetSingers(string name)
     {
         return MusicDB.TSinger
                       .Where(a=>a.SingerName.Contains(name))
                       .ToList();
     }

函数GetSingers用于获取数据库中的Singer名称,ArtistSearch用于指向分部页

最终效果如图

ASP.NET MVC5入门2之Ajax实现数据查询的更多相关文章

  1. Asp.Net MVC5入门学习系列③

    原文:Asp.Net MVC5入门学习系列③ 添加一个视图(View) 接着上篇的入门系列,上面解说添加一个简单Controller(控制器),这里我们简单的在来添加一个View(视图)来展示我们Co ...

  2. Asp.Net MVC5入门学习系列②

    原文:Asp.Net MVC5入门学习系列② 添加一个Controller(控制器) 因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用 ...

  3. Asp.Net MVC5入门学习系列①

    原文:Asp.Net MVC5入门学习系列① 现在直接开始MVC5的学习系列,学习资源来自Micrsoft. 开始使用Asp.Net MVC 5 打开Visual Studio 2013,然后新建一个 ...

  4. Asp.Net MVC5入门学习系列⑦

    原文:Asp.Net MVC5入门学习系列⑦ 接着上篇结尾所说,如果开发中刚才遇到Model需要添加或者减少字段/属性的话,但是刚好你也利用EF的Code frist通过Model生存的数据库,这时改 ...

  5. Asp.Net MVC5入门学习系列⑤

    原文:Asp.Net MVC5入门学习系列⑤ 检查VS生产的编辑方法和编辑窗体 前面我们一步使用强类型,然后创建Controller(控制器)的时候,VS默认已经给我们把CURD都简单的实现了.这篇的 ...

  6. Asp.Net MVC5入门学习系列⑥

    原文:Asp.Net MVC5入门学习系列⑥ 接着上次的篇幅,我们这篇手动来写一个查询的流程代码! 搜索/查询 流程功能的实现 那现在要做搜索(查询)功能我们第一步应该做什么呢!第一次是不是我们应该去 ...

  7. Asp.Net MVC5入门学习系列④

    原文:Asp.Net MVC5入门学习系列④ 添加Model且简单的使用EF 对于EF(EntityFramework)不了解的朋友可以去百度文科或者在园子里搜一些简资源看下,假如和我一样知道EF的概 ...

  8. ASP.NET MVC5入门1之项目创建

    本博文参考ASP.NET MVC5入门指南,下载链接: ASP.NET_MVC5_入门指南 1.创建项目 文件 --> 新建 --> 项目 Visual C# --> Web --& ...

  9. ASP.NET + MVC5 入门完整教程八 -—-- 一个完整的应用程序(上)

    https://blog.csdn.net/qq_21419015/article/details/80509513 SportsStore 1.开始创建Visual Studio 解决方案和项目这里 ...

随机推荐

  1. DingDing的CorpSecretID和SSOSecret不是一个东西

    今天客户更新系统后,提供了一对corpid和secret,结果同步钉钉考勤机数据时,一直提示corpid和secret不正确,最后询问钉钉官方人员发现,客户提供的是SSOSecret,应该使用Copr ...

  2. Unable to find CMake in android studio

  3. luogu 3538/bzoj 2795 Poi2008 哈希+质数结论

    题意:给定一个子串,询问一些子区间内的最短循环节(循环节是越短条件约束越多) 开始一看那就哈希处理然后暴力枚举循环节,然后按照循环节长度暴力向后比较,本地测试40,洛谷60 #include<b ...

  4. iOS拍照图片旋转的问题

    很久之前,遇到了这种情况,iOS某端拍照上传到服务器,其他iOS端从服务器下载该照片展示,发现图片逆时针旋转了90度.当时百度了一下,找到一段代码修正image方向,问题解决了,但没有深入理解底层原理 ...

  5. 迅为6818开发板-Cortex-A5架构丨支持4G全网通丨GPS丨WIFI丨另有丰富的扩展模块

    迅为6848开发板-S5P6818芯片采用Cortex-A53架构! Cortex-A53和其高端兄弟Cortex-A57一样都是64位架构,实目前ARM的主力,且二者的指令集是完全兼容的,可以组成新 ...

  6. java 基础 字符类型

    1.char类型的字面量可以是一个英文字母.字符或一个汉字,并且由单引号包括. 2.Java底层使用一个16位的整数来处理字符类型,该数值是一个字符的unicode编码值. unicode: 1.un ...

  7. jq的css方法

    读属性: $(selector).css(name) 设置属性: 法一: $(selector).css(name,value) 法二: $(selector).css(name,function(i ...

  8. 遇到以前跑一次却没问题的问题,直接maven install 再跑

    遇到以前跑一次却没问题的问题,直接maven install 再用tomcat 跑 比如,xml 路径找不到类,奇葩的报错啊

  9. mysql 查询优化 ~ explain与索引失效

    一 explain  1 扫描行数根据的是表的统计元数据  2 索引的元数据具体指的就是show index from查到的索引的区分度,索引的区分度越高越好   3 表的元数据是定期收集,所以可能不 ...

  10. python - zipfile模块

    import zipfile # f=zipfile.ZipFile(filename, mode="r", compression=ZIP_STORED, allowZip64= ...