ASP.NET MVC实践系列5-结合jQuery

简介:

现在做web开发肯定都听说过jQuery,jQuery在ASP.NET MVC被支持的很好,而且据说vs2010中也会集成进去,所以使用ASP.NET MVC了解jQuery肯定有莫大的好处,所以这里利用几个简单的例子来讲解一下jQuery在ASP.NET MVC的中应用。

一、jQuery的引用

对于一个新的ASP.NET MVC项目来说在它的scripts文件夹下已经包含了jQuery的js文件,所以我们在项目中直接引用就可以了,我们可以在View中输入如下代码:


<head runat="server">
<script src="<%= Url.Content("~/Scripts/jquery-1.3.2.min.js") %>"
type=
"text/javascript"></script>
</head>

这里的min版本去除了空格,注释,改写了长文件名,下载的时候所用过的时间更少。

在Vs中使用jQuery有一个比较大的好处是可以利用智能感知,jQuery的团队和微软的团队共同开发了一个js文件用于在vs中的jQuery可以智能感知,但需要在View中输入


<% /* %><script src="~/Scripts/jquery-1.3.2-vsdoc.js"></script><% */ %>

不过我测试这个的时候发现如果在具体的View中使用了这个引用会影响在View中代码的智能感知,但如果放在mastpage中就没什么问题了。

二、jQuery中使用Ajax方式:

1、jQuery.get(url, [data][callback][type])

urlString:待载入页面的URL地址

data (可选)Map:待发送 Key/value 参数,在服务器端可以用Request获得。

callback (可选)Function:载入成功时回调函数。

type (可选)String:返回内容格式,xml, html, script, json, text, _default。

我们现在要做一个对列表进行查询的ajax请求,前端视图为:

复制代码


    
<script src="<%= Url.Content("~/Scripts/jquery-1.3.2.min.js") %>" type="text/javascript"></script>

    
<%=Html.TextBox("search"%>
    
<input type="button" value="查询" id="btnSearch" />
    <div id="results">
        
<%Html.RenderPartial("NewsListPartial", Model); %>
    
</div>

    
<script language="javascript" type="text/javascript">
        $(
"#btnSearch").click(function() {
        $.get($(
this).attr("href"), { title: $("#search").attr("value") }, function(response) {
                $(
"#results").html(response);
            })

        });
    
</script>
复制代码

NewsListPartial.ascx中的内容为:

复制代码

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<News>>" %>

    
<table>
        
<tr>
           
            
<th>
                Author
            
</th>
            
<th>
                Title
            
</th>
            
<th>
                CreateTime
            
</th>
        
</tr>

    
<% foreach (var item in Model) { %>
    
        
<tr>
       
            
<td>
                
<%= Html.Encode(item.Author) %>
            
</td>
            
<td>
                
<%= Html.Encode(item.Title) %>
            
</td>
            
<td>
                
<%= Html.Encode(String.Format("{0:g}", item.CreateTime)) %>
            
</td>
        
</tr>
    
    
<% } %>

    
</table>
复制代码

Controller为:

复制代码

public ActionResult GetDemo(string title)
        {
            List
<News> news=ListNews.GetList();
            
if (Request.IsAjaxRequest())
            {
                
return View("NewsListPartial",news.Where(p => p.Title.Contains(title)));
            }
            
return View(news);
        }
复制代码

我们重点来解释一下这句:

$.get($(this).attr("href"), { title: $("#search").attr("value") }, function(response) {
                $("#results").html(response);
            })

$(this).attr("href"):获得当前链接

{ title: $("#search").attr("value") }:调用url时传递的参数,这个参数就是TextBox的值。

function(response) {
                $("#results").html(response);
            }:当ajax请求完之后会调用这个函数,这个函数会将id=results的div替换成返回的文本内容。

2、jQuery.post(url, [data], [callback], [type]) 的用法和get的用法很相似

略(见源码)

3、jQuery.getJSON(url, [data], [callback]) :通过 HTTP GET 请求载入 JSON 数据。
View:

复制代码

    <%=Html.TextBox("NewsId"%>
    
<input type="button" id="btnGet" value="获得新闻" />
    
<table>
        
<tr>
            
<td>
                ID:
            
</td>
            
<td id="ID">
            
</td>
        
</tr>
        
<tr>
            
<td>
                作者:
            
</td>
            
<td id="Author">
            
</td>
        
</tr>
        
<tr>
            
<td>
                标题:
            
</td>
            
<td id="Title">
            
</td>
        
</tr>
   
    
</table>

    
<script language="javascript" type="text/javascript">
        $(
"#btnGet").click(function() {
        $.getJSON($(
this).attr("action"), { newsID: $("#NewsId").attr("value") }, function(news) {
                $(
"#ID").html(news.ID);
                $(
"#Author").html(news.Author);
                $(
"#Title").html(news.Title);
            })
        })
    
</script>
复制代码

Controller:

复制代码

public ActionResult JosnDemo(string newsID)
        {
            
if (Request.IsAjaxRequest())
            {
                
return new JsonResult
                {
                    Data 
= ListNews.GetList().First(p => p.ID.ToString() == newsID)
                };
            }
            
else
                
return View();
        }
复制代码

 

4、load(url, [data][callback]) :载入远程 HTML 文件代码并插入至 DOM 中。

下例中当DropDownList改变时,根据DropDownList中的内容改变列表

View:

复制代码

<h2>
        NewsList
</h2>
    
<%=Html.DropDownList("Author"%>
    
<div id="results">
        
<%Html.RenderPartial("NewsListPartial", Model); %>
    
</div>
    
<script language="javascript" type="text/javascript">

        $(
"#Author").change(function() {
            var selection 
= $("#Author").val();
            $(
"#results").load($(this).attr("href"), { author: selection });
        })
    
</script>
复制代码

 

Controller:

复制代码

public ActionResult NewsList(string author)
        {
            
            List
<News> news=ListNews.GetList();
            
if (Request.IsAjaxRequest())
            {
                
if (!string.IsNullOrEmpty(author))
                {
                    news 
= news.Where(p => p.Author == author).ToList();
                }
                
return View("NewsListPartial", news);
            }
            
else
            {
                List
<object> list = new List<object>();
                list.Add(
new { author = "全部", value = "" });
                list.Add(
new { author = "lfm1", value = "lfm1" });
                list.Add(
new { author = "lfm2", value = "lfm2" });
                list.Add(
new { author = "lfm3", value = "lfm3" });
                
                ViewData[
"Author"= new SelectList(list, "value""author");
                
return View(news);
            }
        }
复制代码

 

三、参考:

《pro_asp_dot_net_mvc_framework》

《Professional ASP.NET MVC 1.0》

四、源码下载

本文转自 你听海是不是在笑 博客园博客,原文链接:http://www.cnblogs.com/nuaalfm/archive/2009/11/04/1595411.html  ,如需转载请自行联系原作者

相关文章
|
7月前
|
开发框架 JSON JavaScript
ASP.NET Core3.1实战教程---基于Jquery单文件上传
ASP.NET Core3.1实战教程---基于Jquery单文件上传
86 0
|
4月前
|
人工智能 开发框架 .NET
如何掌握.NET技术,引领开发前沿:.NET技术的核心能力、在现代开发中的应用实践、以及如何通过.NET技术实现持续创新。
.NET技术已成为软件开发不可或缺的部分,本文分三部分探讨:核心能力如多语言支持、统一运行时环境、丰富的类库及跨平台能力;现代开发实践包括企业级应用、Web与移动开发、云服务及游戏开发;并通过性能优化、容器化、AI集成等方面实现持续创新,使开发者站在技术前沿。
74 3
|
2月前
|
开发框架 缓存 算法
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
|
2月前
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
51 7
|
4月前
|
jenkins 测试技术 持续交付
解锁.NET项目高效秘籍:从理论迷雾到实践巅峰,持续集成与自动化测试如何悄然改变游戏规则?
【8月更文挑战第28天】在软件开发领域,持续集成(CI)与自动化测试已成为提升效率和质量的关键工具。尤其在.NET项目中,二者的结合能显著提高开发速度并保证软件稳定性。本文将从理论到实践,详细介绍CI与自动化测试的重要性,并以ASP.NET Core Web API项目为例,演示如何使用Jenkins和NUnit实现自动化构建与测试。每次代码提交后,Jenkins自动触发构建流程,通过编译和运行NUnit测试确保代码质量。这种方式不仅节省了时间,还能快速发现并解决问题,推动.NET项目开发迈向更高水平。
54 8
|
4月前
|
Kubernetes 监控 Devops
【独家揭秘】.NET项目中的DevOps实践:从代码提交到生产部署,你不知道的那些事!
【8月更文挑战第28天】.NET 项目中的 DevOps 实践贯穿代码提交到生产部署全流程,涵盖健壮的源代码管理、GitFlow 工作流、持续集成与部署、容器化及监控日志记录。通过 Git、CI/CD 工具、Kubernetes 及日志框架的最佳实践应用,显著提升软件开发效率与质量。本文通过具体示例,助力开发者构建高效可靠的 DevOps 流程,确保项目成功交付。
96 0
|
4月前
|
人工智能 前端开发 开发工具
NET在企业级应用、Web开发、移动应用、云服务及游戏领域的创新实践
.NET技术自2000年推出以来,在软件开发领域扮演着关键角色。本文从核心优势出发,探讨其统一多语言平台、强大工具集、跨平台能力及丰富生态系统的价值;随后介绍.NET在企业级应用、Web开发、移动应用、云服务及游戏领域的创新实践;最后分析性能优化、容器化、AI集成等方面的挑战与机遇,展望.NET技术的未来发展与潜力。
80 2
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
82 0
|
4月前
|
Java Spring UED
Spring框架的异常处理秘籍:打造不败之身的应用!
【8月更文挑战第31天】在软件开发中,异常处理对应用的稳定性和健壮性至关重要。Spring框架提供了一套完善的异常处理机制,包括使用`@ExceptionHandler`注解和配置`@ControllerAdvice`。本文将详细介绍这两种方式,并通过示例代码展示其具体应用。`@ExceptionHandler`可用于控制器类中的方法,处理特定异常;而`@ControllerAdvice`则允许定义全局异常处理器,捕获多个控制器中的异常。
58 0