jquery ajax/post/get 传参数给 mvc的action
2013-08-10 20:15
337 查看
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
相关代码下载
1.ActionResult Test1
2.View Test1.aspx
3.ajax page
4.MetaObjectMigration.cs string json convert to class
5.相关的代码下载(包含用的相关类, jquery.json.js等)
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(); } } } } }
相关代码下载
相关文章推荐
- [转载]jquery ajax/post/get 传参数给 mvc的action
- jquery+ajax 的 data参数设置的内容,如何在HttpHandler的HttpContext中取得(包括post方式和get方式)
- How to use JSon data in mvc action and post form data use JQuery ajax
- SpringMVC JQuery Ajax Get Post请求在Tomcat中乱码解决方案
- SpringMVC JQuery Ajax Get Post请求在Tomcat中乱码解决方案
- jquery+ajax 的 data参数设置的内容,如何在HttpHandler的HttpContext中取得(包括post方式和get方式)
- SpringMVC Controller接收前台ajax的GET或POST请求返回各种参数(转)
- Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
- Jquery的 AJAX中 POST与GET之间的区别
- jQuery - AJAX get() 和 post() 方法
- 深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法
- 深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
- Ajax-(get/post/jQuery方式请求)
- jQuery - AJAX get() 和 post() 方法
- 在jquery中ajax提交表单的post与get方式详解
- Asp.Net+Jquery.Ajax详解3-$.get和$.post
- 关于mvc、webapi中get、post、put、delete的参数
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()对比