博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net mvc 强类型视图中传入List 数据到控制器
阅读量:6432 次
发布时间:2019-06-23

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

问题来源:

在和一位技术老师聊天时,老师问我一个mvc 表单提交的问题,问道:怎样在表单提交的时候,将 带有 List 属性的对象传入控制器?

这时,我有点呆了,以前一直都好像是 单一属性的表单提交,没有做过 带有list属性 的表单提交。最后饶了一圈,还是老老实实回答老师,不知道,没有处理过。

既然问题出来了,并且还不会,这肯定是不可以的,回去后,开始模拟场景,测试解决问题:

 

1. 首先准备两个实体类

public class Article    {        public string Title { get; set; }        public string Content { get; set; }        public List
Types { get; set; } } public class ArticleType { public string Name { get; set; } public string Dirc { get; set; } }

2.控制器 和 对应视图

public class TestController : Controller    {        //        // GET: /Test/        public ActionResult Index()        {             ViewBag.Mes = "准备测试";return View();        }                [HttpPost]        public ActionResult Index(Article ent)        {
if(ent.Types!=null && ent.Types.Count>0) ViewBag.Mes = "Article下的Types个数为:" + ent.Types.Count;return View(); } }
@model TestUI.Models.Article@{    ViewBag.Title = "Index";}
@ViewBag.Mes

标题: @Html.TextBoxFor(x => x.Title)

内容: @Html.TextAreaFor(x => x.Content)

@for (var i = 0; i < 2; i++) {

类型@(i):

名称: @Html.TextBoxFor(x => x.Types[i].Name) 描述: @Html.TextBoxFor(x => x.Types[i].Dirc)

}

 

3. 结果运行图

没提交前

 

提交后

 

结果已经很明确了,这是一种解决方案,经测试post和get提交都有效。

 

推断能成功的原因:

还是得归功于mvc的强类型视图的解析机制。

表单提交的本质是 表单标签的name 作为 参数名称,表单标签的value 作为 参数值。

@for (var i = 0; i < 2; i++){    

类型@(i):

名称: @Html.TextBoxFor(x => x.Types[i].Name) 描述: @Html.TextBoxFor(x => x.Types[i].Dirc)

} mvc中只有 Types 为 list 时,才能允许你这样写 x.Types[i].Name ,由于mvc语法约定在先,所以当你提交表单时,参数解析器(自己的叫法)会 把 x.Types[i] 的数据值整理添加到 List 中。 由于没有研究过mvc的底层原理,所以只能做以上推断,如有错误,还请指正。

 

转载于:https://www.cnblogs.com/alan_peng/p/4685178.html

你可能感兴趣的文章
集成 Kubernetes 与 Cloud Foundry,IBM自有一套
查看>>
php 中英文字符分割
查看>>
No module named yum
查看>>
Shell处理用户输入参数----getopts
查看>>
【函数】06、装饰器的应用
查看>>
v$sysstat
查看>>
剑指offer 66通关纪念
查看>>
医疗信息化 医学 医院管理 医疗器械 资料下载
查看>>
nginx.conf 示例配置
查看>>
在办公电脑上设置日志服务器监控思科和华为设备
查看>>
python 字符串替换
查看>>
我的友情链接
查看>>
Linux之常用网络命令
查看>>
linux php 安装 curl
查看>>
思科rip、dhcp、vlan
查看>>
tomcat nginx默许的post大小限制
查看>>
OSI七层模型
查看>>
去除工程的.svn隐藏文件夹
查看>>
Python24 终端如何输出彩色字体
查看>>
XSS跨站脚本***
查看>>