.Net mvc 根据前台参数动态绑定对象
业务需求:根据前台界面的参数,动态绑定对象
<param name="colNames">属性名拼接字符串</param>
<param name="data">数据json字符串(前台数组形式)</param>
public ActionResult BindObject(string colNames,string data)
{
var jsonData = JsonConvert.DeserializeObject<dynamic>(data);
if (colNames == null)
{
return RedirectToAction("Index", new { area = "Assessment" });
}
string[] colNamesArray = colNames.Split(',');
List<ExpandoObject> list = new List<ExpandoObject>();
foreach (var item in jsonData)
{
dynamic expandoObject = new ExpandoObject();
foreach (var colName in colNamesArray)
{
(expandoObject as ICollection<KeyValuePair<string, object>>).Add(new KeyValuePair<string, object>(colName, item[colName]));
}
list.Add(expandoObject);
}
return View();
}
-----------------------------------------------------------------------------------------
前台js代码:
//收集列头(属性名)数据
var array = new Array();
var table = $('#tb-data')[0];
for (var i = 0; i < 1; i++) {
for (var j = 0; j < table.rows[0].cells.length; j++) {
var colName = table.rows[0].cells[j].innerText;
array.push(colName);
}
}
//收集数据
var dataArray = new Array();
for (var i = 1; i < table.rows.length; i++) {
var value = {};
for (var j = 0; j < table.rows[i].cells.length; j++) {
if (table.rows[i].cells[j].innerText == undefined || table.rows[i].cells[j].innerText == "") {
value[array[j]] = "";
} else {
value[array[j]] = table.rows[i].cells[j].innerText;
}
}
dataArray.push(value);
}
var postUrl = '/Accounting/AllEvaluate/Export';//提交地址
var postData = JSON.stringify(dataArray);//第一个数据
var ExportForm = document.createElement("FORM");
document.body.appendChild(ExportForm);
ExportForm.method = "POST";
var newElement = document.createElement("input");
newElement.setAttribute("name", "data");
newElement.setAttribute("type", "hidden");
ExportForm.appendChild(newElement);
var newElement2 = document.createElement("input");
newElement2.setAttribute("name", "colNames");
newElement2.setAttribute("type", "hidden");
ExportForm.appendChild(newElement2);
newElement2.value = array;
newElement.value = postData;
ExportForm.action = postUrl;
ExportForm.submit();
.Net mvc 根据前台参数动态绑定对象的更多相关文章
- 【spring mvc】后台spring mvc接收List参数报错如下:org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface
后台spring mvc接收List参数报错如下:org.springframework.beans.BeanInstantiationException: Failed to instantiate ...
- springMVC通过ajax传递参数list对象或传递数组对象到后台
springMVC通过ajax传递参数list对象或传递数组对象到后台 环境: 前台传递参数到后台 前台使用ajax 后台使用springMVC 传递的参数是N多个对象 JSON对象和JSON字符串 ...
- Spring MVC url提交参数和获取参数
[转载:http://blog.csdn.net/mahoking] 普通URL提交参数 该格式url为:url.do?param1=mahc¶m2=8888.00 需 ...
- spring mvc获取路径参数的几种方式 - 浅夏的个人空间 - 开源中国社区
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- MVC接收列表参数
ASP.NET MVC 表单参数如果有列表时要怎么写呢. 虽然很久不用MVC了,但几乎每次遇到一次就要研究一下.然后又忘了. 其实也明白这是未完全弄清楚表单参数的传递形式,如果明白了,就知道MVC为 ...
- django----orm查询优化 MTV与MVC模型 choice参数 ajax serializers
目录 orm查询优化 only defer select_related 与 prefetch_related MTV 与 MVC 模型 choice参数 Ajax 前端代码 后端代码 前后端传输数据 ...
- mvc中多参数URL会很长,首次加载不传参数让url很短,路由规则实现方法[bubuko.com]
如要实现列表中地址全路径“bubuko-11-2.html”,在首次进入时,使用短路径“bubuko.html”,只有再次href后才显示全路径“bubuko-11-2.html”,下面使用路由规则来 ...
- 使用自定义setTimeout和setInterval使之可以传递参数和对象参数
转载自http://www.jb51.net/article/17859.htm /****************************************************** // ...
- 修改 window.setTimeout,使之可以传递参数和对象参数
/* 功能:修改 window.setTimeout,使之可以传递参数和对象参数 使用方法: setTimeout(回调函数,时间,参数1,,参数n) */ var _setTimeout=setTi ...
随机推荐
- Entity Framework Extended Library
扩展了实体框架的功能类库. https://github.com/loresoft/EntityFramework.Extended 1批量更新/删除 1)删除 //delete all users ...
- Entity Framework 数据库初始化的三种方法
在数据库初始化产生时进行控制,有三个方法可以控制数据库初始化时的行为.分别为CreateDatabaseIfNotExists.DropCreateDatabaseIfModelChanges.Dro ...
- iPhone开发学习
Xcode6中怎么添加空工程模板 NSBundle 使用(程序的资源) 本地存储数据的简单方式:NSUserDefaults UIApplication隐藏statusBarStyle ...
- 兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输
Web应用中往往涉及到敏感的数据,由于HTTP协议以明文的形式与服务器进行交互,因此可以通过截获请求的数据包进行分析来盗取有用的信息.虽然https可以对传输的数据进行加密,但是必须要申请证书(一般都 ...
- 案例借鉴 | 某通讯巨头的IT建设方案
成都联通作为合并重组后的中国联通在成都的分支机构,拥有基础扎实的通信网络和当前最先进技术的WCDMA网络.随着3G和4G业务的发展领先,成都联通凭借其出色的网络能力和服务,在用户中赢得了口碑. 在IT ...
- ArcGIS Engine开发之鹰眼视图
鹰眼是GIS软件的必备功能之一.它是一个MapControl控件,主要用来表示数据视图中的地理范围在全图中的位置. 鹰眼一般具有的功能: 1)鹰眼视图与数据视图的地理范围保持同步. 2)数据视图的当前 ...
- 解析URL 获取某一个参数值
/** * 解析URL 获取某一个参数值 * * @param name 需要获取的字段 * @param webaddress URL * * @return 返回的参数对应的 value */ - ...
- Android Volley
1.volley简单的介绍: Volley是一个HTTP库,使Android应用程序变得更加容易,最重要的是,网络 得更快. Vollry 提供以下好处: 1.自动调度的网络请求. 2.多个并发的网络 ...
- IOS之Objective-C学习 策略模式
对于策略模式,我个人理解策略模式就是对各种规则的一种封装的方法,而不仅仅是对算法的封装与调用而已.与工厂模式中简单工厂有点类似,但是比简单工厂更有耦合度,因为策略模式以相同的方法调用所有的规则,减少了 ...
- 组件RecyclerView的应用(一)
首先我们知道RecyclerView组件是ListView的升级版,今天先介绍基础的RecyclerView的基本布局RecyclerView.Adapter和LayoutManager 第一: La ...