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. LoadRunner性能测试指标分析

    Memory: ·Available Mbytes 简述:可用物理内存数.如果Available Mbytes的值很小(4 MB或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存. 参考值 ...

  2. Spring Bean 生命周期

    转自:也谈Spring Bean的生命周期 开篇先用一张老图描述下Spring中Bean容器的生命周期. 插叙一下,记得某个博文中提到:“Spring的Bean容器只管理非单例Bean的生命周期,单例 ...

  3. hdu_5776_sum(前缀和维护)

    题目链接:hdu_5776_sum 题意: 给你一串数,问你是否有一个连续的子序列的和为m的倍数 题解: 维护一个前缀和%m的值,如果前缀和%m的值为0或者有两个前缀和%m的值相同,那么就有一个连续区 ...

  4. hdu_5676_ztr loves lucky numbers

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5676 在这%一下安神,用了我没见过的黑科技next_permutation,至少我是今天才知道的 #i ...

  5. Balancing Symbols

    symbols匹配问题 #include<iostream> #include<string> using namespace std; struct Node { char ...

  6. hibernate ——helloWorld程序(annotation配置)

    在  <hibernate  ——helloWorld程序(XML配置)>基础上,修改.添加部分文件: 1.Teacher类和Teacher表 package com.pt.hiberna ...

  7. 运用Merge Into实现增加或更新数据

    declare @SqlStr as nvarchar(max) set @SqlStr=N'Merge Into [Categories] t USING(VALUES (9,''rice'','' ...

  8. Shell命令替换与变量替换

    命令替换 命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出.命令替换的语法: `command` 注意是反引号,不是单引号,这个键位于 Esc 键下方.下面的例子中,将命令执 ...

  9. jquery带小图的图片轮换效果

    右边显示大图,左边显示小图 <style> ul{ list-style:none; padding:0px; margin:0px;} li{ list-style:none; padd ...

  10. Bom2016/4/21

    Browser Object Model 浏览器对象模型 open(地址,打开方式) open('http://www.baidu.com','_self')本窗口打开百度 open('http:// ...