Asp.Net在客户端和服务器端,以JSON形式相互传值,可写扩展方法,用到的类型如下:

DataContractJsonSerializer类:

该类在System.Runtime.Serialization.Json命名空间下,是将对象序列化为JavaScript对象表示法(Json),并将Json数据反序列化为对象。

以Asp.Net MVC为例:

扩展方法如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.IO;

using System.Runtime.Serialization.Json;

namespace System.Web.Mvc

{

public  static  class  MyFormCollention

{

/// <summary>

/// 生成Json格式

/// </summary>

/// <typeparam name="T"></typeparam>

/// <param name="obj"></param>

/// <returns></returns>

public static string ToJsonStr<T>(T obj)

{

DataContractJsonSerializerjson = new DataContractJsonSerializer(obj.GetType());

using (MemoryStream stream = new MemoryStream())

{

json.WriteObject(stream, obj);

string szJson = System.Text.Encoding.UTF8.GetString(stream.ToArray());

return szJson;

}

}

/// <summary>

/// 将JSON 字符转换为对象

/// </summary>

/// <typeparam name="T"></typeparam>

/// <param name="str"></param>

/// <returns></returns>

public static T ToJsonObject<T>(this string str)

{

T obj = Activator.CreateInstance<T>();

using (MemoryStreamms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str)))

{

DataContractJsonSerializerserializer = new DataContractJsonSerializer(obj.GetType());

return (T)serializer.ReadObject(ms);

}

}

}

}

网页客户端,View的Home文件夹(View视图):

<script>

var Person={

Name:"liu",

Age:"20",

}

functionReposeJson() {

$.ajax({

type:"Get",

url:"@Url.Action("SetJson","Home")?json="+JSON.stringify(Person),

dataType: "Json",

success: function (data)

{

alert(data.Name);

alert(data.Age);

}

})

}

</script>

<h3>We suggest the following:</h3>

<olclass="round">

<liclass="one">

<ahref="#"onclick="ReposeJson()">Learn more…</a>

</li>

</ol>

控制器调用:

public class HomeController : Controller

{

[HttpGet]

public string SetJson(string json)

{

Person boy = MyFormCollention.ToJsonObject<Person>(json);

Person girl = new Person();

girl.Age = "19";

girl.Name = "wang";

json = MyFormCollention.ToJsonStr<Person>(girl);

return json;

}

}

实体类:

public class Person {

public string Name{set;get;}

public string Age { set; get; }

}

Asp.Net MVC以JSON传值扩展方法的更多相关文章

  1. Asp.Net MVC以 JSON传值扩展方法

    Asp.Net在客户端和服务器端,以JSON形式相互传值,可写扩展方法,用到的类型如下: DataContractJsonSerializer类: 该类在System.Runtime.Serializ ...

  2. ASP.NET MVC学前篇之扩展方法、链式编程

    ASP.NET MVC学前篇之扩展方法.链式编程 前言 目的没有别的,就是介绍几点在ASP.NETMVC 用到C#语言特性,还有一些其他琐碎的知识点,强行的划分一个范围的话,只能说都跟MVC有关,有的 ...

  3. ASP.NET MVC HtmlHelper 类的扩展方法

    再ASP.NET MVC编程中用到了R语法,在View页面编辑HTML标签的时候,ASP.NET MVC 为我们准备好了可以辅助我们写这些标签的办法,它们就是HtmlHelper.微软官方地址是:ht ...

  4. Asp.Net MVC向视图View传值的三种方法

    本文将总结Asp.Net MVC向视图View传值的三种常见的方法: ----------------------------------------------------------------- ...

  5. 在Asp.Net MVC中用Ajax回调后台方法

    在Asp.Net MVC中用Ajax回调后台方法基本格式: var operData = ...; //传递的参数(action中定义的) var type = ...; //传递的参数(action ...

  6. ASP.NET MVC ETag & Cache等优化方法

    背景 最近有一个项目是用SmartAdmin + Jquery + EasyUI 一个ASP.NET MVC5的项目,一直存在一个性能问题,加载速度比较慢,第一次加载需要(在没有cache的情况下)需 ...

  7. ASP.net MVC 文件下载的几种方法

      ASP.net MVC 文件下载的几种方法(欢迎讨论) 在ASP.net MVC 中有几种下载文件的方法前提:要下载的文件必须是在服务器目录中的,至于不在web项目server目录中的文件下载我不 ...

  8. ASP.NET MVC 应用提速的十种方法

    [编者按]本文作者为 DZone 社区的最具价值博主(MVB) Jonathan Danylko,主要介绍为 ASP.NET MVC 应用提速的十种方法.由国内 ITOM 管理平台 OneAPM 编译 ...

  9. ASP.NET MVC Action向视图传值之匿名类型

    在使用ASP.NET MVC过程中想必大家都有遇到过一个问题就是我们的Action如何向视图传递匿名类型的值呢,如果不做特殊处理则无法实现. 接下来我们来看一个示例: 在我们的控制中: using S ...

随机推荐

  1. docker Failed to get D-Bus connection 报错 docker run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bash

    docker Failed to get D-Bus connection 报错 原创憬薇2016-01-15 11:25:26评论(10)40278人阅读   在centos7的容器里面出现了一个B ...

  2. JsonNode、JsonObject常用方法

    最近项目中要用json,闲暇时间,对json进行下总结. 1.JsonNode 项目中用到的jar包   import com.fasterxml.jackson.core.JsonParseExce ...

  3. HeadFirst jsp 08 无脚本JSP

    web页面设计人员真的必须懂 java ? web页面人员可以很快学习 EL 语言. 目前不知道 EL 应用前景如何, 但是我们香港系统没有使用 EL. include 指令 include指令告诉容 ...

  4. URL 重写

    转载自:http://www.cnblogs.com/knowledgesea/archive/2012/10/08/2715350.html 一. 为了页面更有利于seo优化,url重写程序需要做出 ...

  5. gradlew assembleRelease打包之前的配置

    http://blog.csdn.net/qq_15527709/article/details/70146061

  6. 将list列表中unicode类型的值转换为字符串类型

  7. PostgreSQL的.NET驱动程序Npgsql中参数对象的一个Bug

    最近将公司的项目从SqlServer移植到PostgreSQL数据库上来,在调用数据库的存储过程(自定义函数)的时候,发现一个奇怪的问题,老是报函数无法找到. 先看一个PgSQL存储过程: CREAT ...

  8. Android 调用系统相机拍照保存以及调用系统相册的方法

    系统已经有的东西,如果我们没有新的需求的话,直接调用是最直接的.下面讲讲调用系统相机拍照并保存图片和如何调用系统相册的方法. 首先看看调用系统相机的核心方法: Intent camera = new ...

  9. 类似hibernate实现sql增删改错

    Util package utils; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Ha ...

  10. PAT 1026 Table Tennis (30)

    A table tennis club has N tables available to the public. The tables are numbered from 1 to N. For a ...