MVC动态添加文本框,后台使用FormCollection接收
在"MVC批量添加,增加一条记录的同时添加N条集合属性所对应的个体"中,对于前台传来的多个TextBox值,在控制器方法中通过强类型来接收。使用FormCollection也可以接收来自前台的多个TextBox值。实现效果如下:
动态添加TextBox:
后台使用FormCollection接收来自前台的TextBox值,再以TempData把接收到的值返回:
当页面没有TextBox,点击"移除",提示"没有文本框可被移除":
在HomeController中,先获取前台用来计数的隐藏域的值,然后遍历,根据前台Input的name属性值的命名规则获取到每个TextBox的值。
public class HomeController : Controller
{ public ActionResult Index()
{
return View();
} [HttpPost]
public ActionResult Index(FormCollection collection)
{
var inputCount = 0; //前端文本框的数量
var inputValues = new List<string>();//前端文本款的值放到这个集合 if (int.TryParse(collection["TextBoxCount"], out inputCount))
{
for (int i = 1; i <= inputCount; i++)
{
if (!string.IsNullOrEmpty(collection["textbox" + i]))
{
inputValues.Add(collection["textbox" + i]);
}
}
}
TempData["InputResult"] = inputValues;
return View();
}
}
在Home/Index.cshtml中,通过jquery添加或移除TextBox。
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
} <div>
@if (TempData["InputResult"] != null)
{
<ul>
@foreach (var item in (List<string>) TempData["InputResult"])
{
<li>@item</li>
}
</ul>
}
</div> @using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<div>
<div id="TextBoxesGroup">
<input type="text" id="textbox1" name="textbox1"/>
</div>
<hr/>
@Html.Hidden("TextBoxCount", 1)
<input type="button" value="添加" id="add"/>
<input type="button" value="移除" id="remove"/>
<input type="submit" value="提交"/>
</div>
} @section scripts
{
<script type="text/javascript">
$(document).ready(function() {
//默认焦点
$('#textbox1').focus(); //点击添加
$('#add').click(function() {
//从隐藏域中获取当前文本框的数量
var currentCount = parseInt($('#TextBoxCount').val(), 10); //文本框数量加1
var newCount = currentCount + 1; //创建新的文本框
var newInput = $(document.createElement('Input')).attr({
"type": "text",
"id": "textbox" + newCount,
"name": "textbox" + newCount
}); //把新的文本框附加到区域中
$('#TextBoxesGroup').append(newInput); //把当前文本框的数量赋值到用来计数隐藏域
$('#TextBoxCount').val(newCount); //把焦点转移到新添加的文本框中来
$('#textbox' + newCount).focus();
}); //点击移除
$('#remove').click(function() {
//从隐藏域中获取当前文本框的数量
var currentCount = parseInt($('#TextBoxCount').val(), 10);
if (currentCount == 0) {
alert('已经没有文本框可以被移除了~~');
return false;
}
//移除当前文本框
$('#textbox' + currentCount).remove(); //把新的文本框计数赋值给隐藏域
var newCount = currentCount - 1;
$('#TextBoxCount').val(newCount);
});
});
</script>
}
参考资料:
ASP.NET MVC 动态新增输入框然后在后端以FormCollection 取得资料
MVC动态添加文本框,后台使用FormCollection接收的更多相关文章
- 通过jquery来实现文本框和下拉框动态添加效果,能根据自己的需求来自定义最多允许添加数量,实用的jquery动态添加文本框特效
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [Ext.Net]动态生成控件(二)--js动态添加文本框
转自:http://www.ext.net.cn/forum.php?mod=viewthread&tid=11931 点击一个按钮就出现一行控件,点击删除控件就可将一行控件删除,这是不是你一 ...
- JS 通过点击事件动态添加文本框
直接拷贝到浏览器就能实现 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <htm ...
- 【实践】js 如何实现动态添加文本节点
对于我这个js 小白来说 今天鼓起勇气做起了邮箱认证这个特效 但是这次不是想说如何实现这这个特效而是想记录一下特效当中的某个部分 那就是向元素节点动态添加文本节点 百度了一下动态添加文本节点的方式 是 ...
- SSRS动态设置文本框属性
SSRS可以通过表达式动态设置文本框所有的属性,比如字体,字号,是否加粗,如下图所示: 汉字和数字英文字母占用的空间不一样,一个汉字占用两个数字和英文字母的空间,VB里有LENB取得字节数,这SSRS ...
- JS实现动态提示文本框可输入剩余字数(类似发表微博数字提示)
一.实现效果: 为了更直观的体现用户在文本框输入文本时能看到自己输入了多少字,项目中需要通过判断提示文本框剩余可输入字数. html & JS: <div> <textare ...
- 用JS添加文本框案例代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- matlab图形中添加文本框
图形中添加文本框,自己目前了解到了两种方法:1.用legend函数就可以对图形标注,形成一个文本框: 2.就是用annotation('textbox',[0.2,0.2.0.1,0.3],'Line ...
- (Android Studio)添加文本框
此文大部分摘自http://hukai.me/android-training-course-in-chinese/basics/firstapp/building-ui.html android : ...
随机推荐
- sql 修改列名及表名 sp_rename
因需求变更要改表的列名,平常都是跑到Enterprise manager中选取服务器->数据库->表,然后修改表,这样太麻烦了,查了一下,可以用script搞定, 代码如下: EXEC s ...
- 使用mockito模拟静态方法
一.为什么要使用Mock工具 在做单元测试的时候,我们会发现我们要测试的方法会引用很多外部依赖的对象,比如:(发送邮件,网络通讯,远程服务, 文件系统等等). 而我们没法控制这些外部依赖的对象,为了解 ...
- 使用 ResponseBodyAdvice 拦截Controller方法默认返回参数,统一处理返回值/响应体
使用 @ControllerAdvice & ResponseBodyAdvice 拦截Controller方法默认返回参数,统一处理返回值/响应体 1.Controller代码 以下是Con ...
- 自定义Adapter为什么会重复多轮调用getView?——原来是ListView.onMeasure在作祟
相信很多人在使用自定义Adapter的时候都遇到这样的问题: 假设Adapter数据源中只有30个Item,理论上每显示一个新的Item的时候就会调用一次getView,均显示一次的话是要调用getV ...
- 【AtCoder】ARC096(C - F)
听说日本题思维都很棒,去涨涨智商qwq C - Half and Half 题解 枚举买多少个AB披萨也行 但是关于买x个AB披萨最后的总花费是个单峰函数,可以三分 这题有点像六省联考2017D1T1 ...
- forkcms 开启调试模式
You can enable debug mode by adding "SetEnv FORK_DEBUG 1" in your virtualhosts file.
- linux 下nginx安装
一.一键安装四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 二.创建一个安装目录,并下载nginx安装 ...
- poj-2777线段树刷题
title: poj-2777线段树刷题 date: 2018-10-16 20:01:07 tags: acm 刷题 categories: ACM-线段树 概述 这道题是一道线段树的染色问题,,, ...
- Microsoft Office Access
Microsoft Office Access各版本下载地址:http://www.accessoft.com/download.html 简介 access(微软发布的关联式数据库管理系统)一般指M ...
- JAVA 9 新特性
Oracle已将JAVA 9的开发提上日程.OpenJDK上已经出现了关于下一个主版本JAVA 9的改进建议(JEP).与以往不同,Oracle在这次谈及了一些真正的特性.而早期对于JDK9的声明仅 ...