博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC从视图传递多个模型到Controller
阅读量:7145 次
发布时间:2019-06-29

本文共 1776 字,大约阅读时间需要 5 分钟。

从后台组织好数据然后传递到页面倒是水到渠成很方便,因为MVC自身就将这样的需求内建到了这个系统中。我只需要在后台组织好一个List 或IEnumerable类型的变量,将需要传递的数据模型扔进去便可。

 

比如这里我们向视图返回5条product信息在页面进行展示,仅仅是返回这么简单。

 

然后在页面我们就毫不费力地得到了后台传过来的数据模型,然后进行显示即可。

 

但问题是,如何又将多个模型传回后台去呢。一个form一般只传递一个模型,我们可以在JavaScript里序列化多个模型然后通过ajax 传递回去。

1.首先改造页面,假设在页面有很多输入框供用户输入模型的相关信息,并且搞一个按扭来提交。

@foreach (Product item in Model) {
}

 

 

 

2.然后在JavaScript中获取这些输入值,最后将所有模型整合到一个models变量中。

var models = [];    $.each($("table tr"), function(i, item) {        var ProductName = $(item).find("[name=ProductName]").val();        var SupplierID = $(item).find("[name=SupplierID]").val();        var CategoryID = $(item).find("[name=CategoryID]").val();        models.push({ ProductName: ProductName, SupplierID: SupplierID, CategoryID: CategoryID });    });

 

当然这些是写到按扭的单击事件中的。

所以完整的代码看起来应该是这个样子。

 

到这里我们可以加个debugger测试一下有没有有前台代码中成功获取到输入框的值及组织好的模型对不对。

在页面按F12打开开发者工具,然后试着在页面输入一些值,最后单击按扭。

 

我们看到,在遍历了所有输入框后,以每行为单位当成一个Product模型,压入models变量中。这个时候,models变量中保存了所有信息。

3.准备后台接收数据的Action 。我们当然是接收多个模型,所以接收类型选择为List<Product>

 

public ActionResult ReceiveData(List
products) { string result = products == null ? "Failed" : "Success"; return Content(result); }

 

4.最后一步,将models变量通过Ajax传送到后台

这一步是最关键的,因为ajax格式没写好后台是无法接收到正确的数据的。经过我颇费心神的研究最后得出的ajax代码大概是下面这个样子的:

 

$.ajax({        url: '../../Home/ReceiveData',        data: JSON.stringify(models),        type: 'POST',        contentType: 'application/json; charset=utf-8',        success: function(msg) {            alert(msg);        }    });

 

最后完整的前台代码大概应该是这个样子的。

 

5.调试看结果

 

结果显示我们接收到了前台传过来的每一个数据,完工。

转载地址:http://dngrl.baihongyu.com/

你可能感兴趣的文章
简单的ISIS协议的路由重分发实验详解
查看>>
Python模块学习--shutil和hashlib和json
查看>>
Linux防火墙iptables学习笔记(一)入门要领
查看>>
xshell 秘钥配对
查看>>
saltstack之SLS文件
查看>>
Redhat linux下cvs的安装配置
查看>>
cxgrid合并值相同的某列
查看>>
增量备份和差异备份的区别
查看>>
纯JS操作获取桌面路径方法
查看>>
thinkphp数据库添加表单提交的数据
查看>>
Hibernate事务属性
查看>>
OVS local network 连通性分析 - 每天5分钟玩转 OpenStack(132)
查看>>
反编译工具jad简单用法
查看>>
无法获取网关MAC地址表/radware备机流量——在不断的应急中提高
查看>>
iOS上使用自定义ttf字体
查看>>
关于CentOS/RHEL 7.x的yum组安装错误的解决方案
查看>>
通过PowerShell轻松转换VHD文件到VHDX格式
查看>>
OLTP应用之MySQL架构选型
查看>>
[Unity插件]LitJson杂谈
查看>>
调节effective_io_concurrenc优化PostgreSQL bitmap index scan性能
查看>>