62,242
社区成员




var arrayPermission = [];
arrayPermission.push({ MenuID: 1, Function: 浏览 });
arrayPermission.push({ MenuID: 1, Function: 新增 });
var param = { roleFunction: JSON.stringify(arrayPermission), roleId: selectRole.attributes.ID };
后台action部分:
public ActionResult SaveRolePermission([ModelBinder(typeof(JsonBinder<PermissionField>))]List<PermissionField> roleFunction, int roleId, string otherRoleIds)
{...}
PermissionField类定义:
/// <summary>
/// 权限字段
/// </summary>
public class PermissionField
{
/// <summary>
/// 菜单ID
/// </summary>
public int MenuID { get; set; }
/// <summary>
/// 功能点名称
/// </summary>
public string Function { get; set; }
}
JsonBinder部分:
/// <summary>
/// Json数据绑定类 对json数据反序列化
/// </summary>
/// <typeparam name="T"></typeparam>
public class JsonBinder<T> : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
//从请求中获取提交的参数数据
var json = controllerContext.HttpContext.Request.Form[bindingContext.ModelName] as string;
//提交参数是对象
if (json.StartsWith("{") && json.EndsWith("}"))
{
JObject jsonBody = JObject.Parse(json);
JsonSerializer js = new JsonSerializer();
object obj = js.Deserialize(jsonBody.CreateReader(), typeof(T));
return obj;
}
//提交参数是数组
if (json.StartsWith("[") && json.EndsWith("]"))
{
IList<T> list = new List<T>();
JArray jsonRsp = JArray.Parse(json);
if (jsonRsp != null)
{
for (int i = 0; i < jsonRsp.Count; i++)
{
JsonSerializer js = new JsonSerializer();
object obj = js.Deserialize(jsonRsp[i].CreateReader(), typeof(T));
list.Add((T)obj);
}
}
return list;
}
return null;
}
}
需要引用json.net,然后就可以using Newtonsoft.Json 和 Newtonsoft.Json.Linq
str = "cost1.a:1,cost1.b:1|cost2.a:2,cost2.b:2";
var da = "{'costs':[{a:'1', b:'1'}, {a:'2', b:'2'}]}";
var data = {"data":str};
用str或者da都行啊,str就是纯粹一个字符串string data接收,完了自己分割 | 获取每个对象 分割,获取属性 分割:获取值,
用da的话就是用json序列化。