[转载]jquery ajax/post/get 传参数给 mvc的action
2014-01-19 21:21
671 查看
jquery ajax/post/get 传参数给 mvc的action 1.ActionResult Test1 2.View Test1.aspx 3.ajax page 4.MetaObjectMigration.cs string json convert to class 5.相关的代码下载(包含用的相关类, jquery.json.js等)
ActionResult Test1
Test1.aspx
ajax page 四种写法
string json convert to object class
相关代码下载
原文地址:http://www.cnblogs.com/dfg727/archive/2013/08/10/3250548.html
ActionResult Test1
public ActionResult Test1(string nameJS, UserInfoInputData model, string js) { UserInfoInputData userinfo = new UserInfoInputData(); if (!string.IsNullOrEmpty(js)) { userinfo = (UserInfoInputData)js.ToInputDataObject(typeof(UserInfoInputData)); } ViewData["Time"] = model.Name + " :" + userinfo.Name; ViewData["Time2"] = model.age; ViewData["Message"] = "Test1 :" + nameJS + " :" + typeof(UserInfoInputData).ToString(); ViewData["js"] = userinfo.ToJSON(); return View(); }
Test1.aspx
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Test1</title> </head> <body> <div> The current time is: <%= DateTime.Now.ToString("T") %> <br/><br/> BO:<%=ViewData["Time"] %> <br/><br/> BO2:<%=ViewData["Time2"] %> <br/><br/> Message:<%=ViewData["Message"] %> <br/><br/> <%=ViewData["js"]%> </div> </body> </html>
ajax page 四种写法
function test(parameters) { var sjson = '{ "name~!@#$%^&*(){}|:\"<>?/.,\';\\[]v-name": "nvar", "desc": "des" } '; var sjs = '{"Name":"jsname", "age":3}'; //get post 都可以 $.post("Test1", "nameJS=" + encodeURIComponent(sjson) + "&model.name=modelName&model.age=3" + "&js=" + encodeURIComponent(sjs)); //model.name model.Name 都可以 var json = { "nameJS": "~!@#$%^&*(){}|:\"<>?/.,';\\[]v-name", "model.name": "modelname", "model.age": 1, "js":'{"Name":"jsname", "age":3}' }; $.post("Test1", json); var param = {}; param["nameJS"] = "paramjs"; param["model.Name"] = "someone"; param["model.age"] = 2; param["js"] = '{"Name":"jsname", "age":3, "Tags":"tag1"}'; //或者param["js"] = JSON.stringify({"Name":"jsname", "age":3, "Tags":"tag1"}); $.post("Test1", param); var metaformJsonItem = new Object(); metaformJsonItem.nameJS = "~!@#$%^&*(){}|:\"<>?/.,';\\[]v-name"; metaformJsonItem.js = JSON.stringify({ //key:value key注意大小写 "Name": "~!@#$%^&*(){}|:\"<>?/.,';\\[]v-jsname", "Tags": JSON.stringify(["tag1", "tag2"]), "age": 3, "Ids": JSON.stringify([1, 2, 3]), //或者'[1, 2, 3]' "Country": 0, "Countries": JSON.stringify([1, 2]) }); metaformJsonItem["model.Name"] = "modelname"; metaformJsonItem["model.age"] = "11"; $.post("Test1", metaformJsonItem); }
string json convert to object class
using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Web; using Newtonsoft.Json; namespace Demo.Common.Metaform.UI { public static class MetaObjectMigration { private enum HandlingMethod { DoNothing, SimpleEnum, ArrayOfEnum, ArrayOfString, ListOfEnum, ListOfSerializable } public static InputDataObject ToInputDataObject(this string jsonXml, Type objectType) { return jsonXml.FromMetaJson(objectType); ; } public static InputDataObject FromMetaJson(this string json, Type objectType) { string jsonString = GetJsonFromMetaJson(json, objectType); JsonSerializer serializer = new JsonSerializer(); serializer.NullValueHandling = NullValueHandling.Ignore; serializer.MissingMemberHandling = MissingMemberHandling.Ignore; InputDataObject deserialedObject = (InputDataObject) serializer.Deserialize(new StringReader(jsonString), objectType); return deserialedObject; } private static string GetJsonFromMetaJson(string json, Type displayObjectType) { PropertyInfo[] properties = displayObjectType.GetProperties(); using (JsonTextReader reader = new JsonTextReader(new StringReader(json))) { using (StringWriter sw = new StringWriter()) { using (JsonTextWriter writer = new JsonTextWriter(sw)) { HandlingMethod handlingMethod = HandlingMethod.DoNothing; bool ignoreThisProperty = false; string newKey = string.Empty; int arrayLevel = 0; Type elementType; while (reader.Read()) { if (reader.TokenType == JsonToken.PropertyName) { string propertyJsonName = reader.Value.ToString(); var propertyName = propertyJsonName;//JsonNameToPropertyName(propertyJsonName); PropertyInfo propertyInfo = properties.FirstOrDefault(c => (c.Name == propertyName)); if (propertyInfo != null) { ignoreThisProperty = false; var propertyType = propertyInfo.PropertyType; if (propertyType.IsEnum) { handlingMethod = HandlingMethod.SimpleEnum; } else if (propertyType.IsGenericType && propertyType.GetGenericArguments()[0].IsEnum) { elementType = propertyType.GetGenericArguments()[0]; handlingMethod = HandlingMethod.ListOfEnum; } else if (propertyType.IsGenericType && propertyType.GetGenericArguments()[0].IsSerializable) { elementType = propertyType.GetGenericArguments()[0]; handlingMethod = HandlingMethod.ListOfSerializable; } else if (propertyType.IsArray && propertyType.GetElementType().IsEnum) { elementType = propertyType.GetElementType(); handlingMethod = HandlingMethod.ArrayOfEnum; } else if (propertyType.IsArray) {//e.g. string[] elementType = propertyType.GetElementType(); handlingMethod = HandlingMethod.ArrayOfString; } else { handlingMethod = HandlingMethod.DoNothing; } } else { ignoreThisProperty = true; continue; } newKey = propertyJsonName;//JsonNameToPropertyName(propertyJsonName); writer.WritePropertyName(newKey); } else if (reader.TokenType == JsonToken.String || reader.TokenType == JsonToken.Integer) { if (ignoreThisProperty) continue; string value = reader.Value.ToString(); if (handlingMethod == HandlingMethod.SimpleEnum) { int code; if (int.TryParse(value, out code)) { writer.WriteValue(code); } else { var intList = value.ToIntList(); if (intList != null && intList.Count > 0) { writer.WriteValue(intList[0]); } else { writer.WriteNull(); } } } else if (handlingMethod == HandlingMethod.ListOfEnum || handlingMethod == HandlingMethod.ArrayOfEnum || handlingMethod==HandlingMethod.ArrayOfString || handlingMethod == HandlingMethod.ListOfSerializable) { CreateJsonArray(writer, handlingMethod, value, arrayLevel); } else { writer.WriteValue(value); } } else { //Json Clone switch (reader.TokenType) { case JsonToken.Comment: writer.WriteComment(reader.Value.ToString()); break; case JsonToken.EndArray: writer.WriteEndArray(); arrayLevel--; break; case JsonToken.EndConstructor: writer.WriteEndConstructor(); break; case JsonToken.EndObject: writer.WriteEndObject(); break; case JsonToken.None: break; case JsonToken.Null: writer.WriteNull(); break; case JsonToken.StartArray: writer.WriteStartArray(); arrayLevel++; break; case JsonToken.StartConstructor: writer.WriteStartConstructor(reader.Value.ToString()); break; case JsonToken.StartObject: writer.WriteStartObject(); break; case JsonToken.Undefined: writer.WriteUndefined(); break; default: writer.WriteValue(reader.Value); break; } } } return sw.ToString(); } } } } private static void CreateJsonArray(JsonTextWriter writer, HandlingMethod handleingMethod, string value, int arrayLevel) { IList valueList; if (handleingMethod == HandlingMethod.ListOfEnum || handleingMethod == HandlingMethod.ArrayOfEnum) { valueList = value.ToIntList(); } else { valueList = value.ToStringList(); } if (valueList.Count > 0) { if (arrayLevel == 0) { writer.WriteStartArray(); } foreach (var i in valueList) { writer.WriteValue(i); } if (arrayLevel == 0) { writer.WriteEndArray(); } } else { if (arrayLevel == 0) { writer.WriteStartArray(); writer.WriteEndArray(); } } } } }
相关代码下载
原文地址:http://www.cnblogs.com/dfg727/archive/2013/08/10/3250548.html
相关文章推荐
- jquery ajax/post/get 传参数给 mvc的action
- 转载 : Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
- SpringMVC Controller接收前台ajax的GET或POST请求返回各种参数(转)
- SpringMVC JQuery Ajax Get Post请求在Tomcat中乱码解决方案
- jquery+ajax 的 data参数设置的内容,如何在HttpHandler的HttpContext中取得(包括post方式和get方式)
- How to use JSon data in mvc action and post form data use JQuery ajax
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()《转载》
- SpringMVC JQuery Ajax Get Post请求在Tomcat中乱码解决方案
- jquery+ajax 的 data参数设置的内容,如何在HttpHandler的HttpContext中取得(包括post方式和get方式)
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
- jQuery中$.get、$.post、$.getJSON和$.ajax的用法
- jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
- JQuery的Ajax使用Get,Post方法调用C#WebService并返回数据
- jquery中get,post和ajax方法的使用小结
- jquery中$.get(),$.post(),$.ajax(),$.getJSON()区别详解以及aja
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
- 【转载】jquery getJson 中文字符参数乱码问题的解决办法
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
- 锋利的jQuery读书笔记---jQuery中Ajax--get、post等方法
- 深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法