MVC通过JsonResult返回Json数据,然后在视图页面中通过@Html.Partial()方法加载分部视图

首先,新建一个MVC类型的Web项目:

然后在Model文件夹下定义一个Student实体:

public class Student
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Sex { get; set; }
        public int Age { get; set; }
    }

然后新建一个Student控制器:

using JsonDataWithMVC.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace JsonDataWithMVC.Controllers
{
    public class StudentController : Controller
    {
        // GET: Student
        public ActionResult Index()
        {
            return View();
        }

        /// <summary>
        /// 通过Json返回数据到前端
        /// </summary>
        /// <returns></returns>
        public JsonResult _StudentList()
        {

            List<Student> stuModel = new List<Student>()
            {
            new Student() {
                ID=1,
                Name="曹操",
                Age=1500,
                Sex="男"
            },
            new Student()
            {
                ID=2,Name="孙权",Age=2000,Sex="男"
            }
            };

            return Json(stuModel,JsonRequestBehavior.AllowGet);
        }
    }
}

创建对应的Index视图:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        @*在视图中加载分部视图*@
         @Html.Partial("_StudentList")
    </div>
</body>
</html>

相对应的_StudentList分部视图:

@model IEnumerable<JsonDataWithMVC.Models.Student>
<table class="myTable">
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
            <th>Sex</th>
        </tr>
    </thead>
    <tbody>

    </tbody>
</table>
@*通过Json返回数据到前端*@
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script type="text/javascript">

    $(document).ready(function () {
       //前台通过Jquery中的getJson方法,调用控制器中的方法,加载数据
        $.getJSON("/Student/_StudentList", function (data) {
            var tr;
            //把每一行的数据加到table中
            //注意:js中智能提示不完全:i < data.length;,,data[i].Name....
            for (var i = 0; i < data.length; i++) {
                tr = $("<tr/>");
                tr.append("<td>" + data[i].ID + "</td>");
                tr.append("<td>" + data[i].Name + "</td>");
                tr.append("<td>" + data[i].Age + "</td>");
                tr.append("<td>" + data[i].Sex + "</td>");
                //通过css找到table,把数据绑定到table中
                $(".myTable").append(tr);
            }

        })

    })
</script>

编译一下:修改路由为Student控制器,Index方法,运行,我们就可以看到结果了

然后工作中还会遇到直接在视图中加载分部视图。这里我用jquery的load方法,来做,请看我方法二:

在控制器中添加一个方法:

  /// <summary>
        /// 返回分部视图
        /// </summary>
        /// <returns></returns>
        public PartialViewResult _StudentListInfo()
        {
            List<Student> stuModel = new List<Student>()
            {
            new Student() {
                ID=1,
                Name="曹操",
                Age=1500,
                Sex="男"
            },
            new Student()
            {
                ID=2,Name="孙权",Age=2000,Sex="男"
            }
            };
            return PartialView(stuModel);
        }

然后添加对应的视图:

@model  IEnumerable<JsonDataWithMVC.Models.Student>
<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Sex</th>
            <th>Age</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.ID</td>
                <td>@item.Name</td>
                <td>@item.Sex</td>
                <td>@item.Age</td>
            </tr>
        }

    </tbody>
</table>

接着,我在Index视图中,通过Jquery的load方法加载局部视图:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div id="myDIV">

        @*方法一 :在视图中加载分部视图*@
         @*@Html.Partial("_StudentList")*@

    </div>

    <script src="~/Scripts/jquery-1.10.2.js"></script>
    <script type="text/javascript">
        //方法二,通过Jquery的load方法,直接加载分部视图
        $(document).ready(function () {
            //注意这里的#myDIV,是CSS选择器
            $("#myDIV").load("/Student/_StudentListInfo").show();

        })
    </script>
</body>
</html>

运行程序,之后,得到的是相同的结果:

总结:这个文章主要是记录自己工作中遇到的问题,前端的CSS,js不熟悉,加以巩固!!!

时间: 2024-12-31 07:11:13

MVC通过JsonResult返回Json数据,然后在视图页面中通过@Html.Partial()方法加载分部视图的相关文章

Spring MVC使用@ResponseBody返回JSON数据406问题解决方案

其实前面一篇关于zTree返回JSON数据的文章已经有一种解决方案了,但是当我今天在新公司搭建新环境的时候,发现决然又不行了,所以我觉得那应该不是最优的解决方案. 说起来,我以前接触到的一个项目,根本没有配置spring的文件,就直接用@ResponseBody可以返回JSON数据,不知道其中的秘诀在什么地方,搞不懂了. 今天主要提供另一个解决@ResponseBody返回JSON数据,页面抛出406错误的解决方案. 第一步,引入包: <dependency> <groupId>c

CoAP学习笔记——nodeJS node-coap返回JSON数据包

0 前言 本文说明如何使用node-coap返回JSON数据包.CoAP是专门为物联网系统开发的面向网络的应用层协议栈,CoAP建立在UDP协议之上尽可能减少网络开销,又具有HTTP Restful类型的特性.node-coap使用nodejs实现了coap的客户端和服务器端. [测试环境]--ubuntu/Linux [相关博文] [CoAP协议文档--The Constrained Application Protocol (CoAP)] [CoAP协议学习--CoAP基础] [CoAP学习

Spring MVC返回json数据给Android端

原先做Android项目时,服务端接口一直是别人写的,自己拿来调用一下,但下个项目,接口也要自己搞定了,我想用Spring MVC框架来提供接口,这两天便抽空浅学了一下该框架以及该框架如何返回json数据.在这里边介绍两种个人觉得比较方便的两种方法(PS:其实是我现在只会这两种). 1.直接PrintWriter输出json数据 使用该方法时,可以自己拼凑json字符串,不过我并不赞同使用该方法,毕竟太容易出错了.所以这里我是先构建jsonobject对象,在将该对象打印出来.首先,我们要导入一

spring mvc 返回json数据的三种方式

一.返回ModelAndView,其中包含map集 /* * 返回ModelAndView类型的结果 * 检查用户名的合法性,如果用户已经存在,返回false,否则返回true(返回json数据,格式为{"valid",true}) */ @RequestMapping(value = "/checkNameExistsMethod2", produces = "application/json;charset=UTF-8") //这里的prod

【Struts2】SSH如何返回JSON数据

  在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就是平常的配置 第一种方法是使用com.google.gson.Gson 将对象转化为Json字符串  (gson-1.6.jar) 主要的代码如下 1 package com.javen.tool; 2 3 import java.io.IOException; 4 import java.io.P

idea+springmvc+spring+mybatis+maven整合返回json数据webapi

首先看一张目录结构图: : 创建步骤: 1.创建maven  webapp工程, 创建完后的目录结构为: 2.添加项目依赖(添加jar包) 需要的jar包: spring-webmvc, spring-test, spring-orm, commons-dbcp, mybatis, mybatis-spring, mysql-connector-java, commons-fileupload, jstl,jackson-core, jackson-databind, jackson-mappe

springMVC 返回json数据

虽然工作中经常使用异步请求加载数据,但是大部分这些系统的架构都是由其他同事完成的,这几天尝试着自己搭建springMVC项目中途遇到了不少的问题, 我们经常会需要向后台请求数据,后台往往返回json格式的数据作为返回结果,springMVC框架中有@ResponseBody 但是需要配置文件一通配置 controller层代码 @ResponseBody @RequestMapping("/testJson") public Collection<Employee> tes

【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www.cnblogs.com/ssslinppp/p/4528892.html [Spring学习笔记-MVC-4]返回Json数据-方式2:http://www.cnblogs.com/ssslinppp/p/4530002.html [Spring学习笔记-MVC-3.1]SpringMVC返回Json数据-

android-async-http开源项目对服务器端返回JSON数据的处理

一.在JavaEE项目中搭建环境 1. 导入相关jar包 2. 搭建相关的包和类 3.类中的方法简单实现 User: 声明以下属性,并实现无参构造器和有参构造器,以及各自的get和set方法 UserDao: UserDaoImpl: JsonServlet: <span style="white-space:pre"> </span>protected void doGet(HttpServletRequest request, HttpServletResp