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接收

时间: 2024-11-10 13:00:36

MVC动态添加文本框,后台使用FormCollection接收的相关文章

通过jquery来实现文本框和下拉框动态添加效果,能根据自己的需求来自定义最多允许添加数量,实用的jquery动态添加文本框特效

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-

JS 通过点击事件动态添加文本框

直接拷贝到浏览器就能实现 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Change.html</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <

通过js动态生成文本框,怎么把文本框中的值传到java后台?

通过js动态生成文本框,怎么把文本框中的值传到java后台? 1 var lengths; 2 function insertrow2() //增加的一行方法2 3 { 4 newRow=document.all.yltable.insertRow(-1); 5 lengths = document.all.yltable.rows.length; 6 7 newcell=newRow.insertCell() ; 8 newRow.bgColor='#FFFFFF'; 9 newcell.al

用JS添加文本框案例代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

JS实现动态提示文本框可输入剩余字数(类似发表微博数字提示)

一.实现效果: 为了更直观的体现用户在文本框输入文本时能看到自己输入了多少字,项目中需要通过判断提示文本框剩余可输入字数. html & JS: 1 <div> 2 <textarea name="content" id="content" onkeyup="javascript:checkWords(this);" onmousedown="javascript:checkWords(this);"

【实践】js 如何实现动态添加文本节点

对于我这个js 小白来说 今天鼓起勇气做起了邮箱认证这个特效 但是这次不是想说如何实现这这个特效而是想记录一下特效当中的某个部分 那就是向元素节点动态添加文本节点 百度了一下动态添加文本节点的方式 是使用document.createNodeChild("要想添加的内容");   这个方法 它的使用方式是: var correct = document.createTextNode("输入正确"); var error = document.createTextNo

VC/MFC 工具栏上动态添加组合框等控件的方法

引言 工具条作为大多数标准的Windows应用程序的一个重要组成部分,使其成为促进人机界面友好的一个重要工具.通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开发环境所创建的应用程序框架中的工具条只是一个简单的按钮的集合,在功能上也仅仅是起到了菜单快捷方式的作用,而没有做到象VC.Word等软件的工具条那样,提供多种不同类型的标准控件如组合框.编辑框等.尤其是组合框在添加到工具条上后,可将原本需要在弹出对话框中完成的交互操作在工具条上就可以进行,从而在很大程

html表格动态添加删除行(有后台操作)

<HTML> <TITLE>Form Object example</TITLE> <HEAD> <script language="javascript"> function delrow1() { var oElement=event.srcElement; while(oElement.tagName!="TR") { oElement=oElement.parentElement; } var oT

PDF编辑技巧之如何给PDF文件添加文本框工具?

如何给PDF文件添加文本框工具?PDF文件添加文本框工具的方法是什么?PDF文件是现在人们常用的一种文件格式,同其他文件一样只是一种单纯的文件格式.PDF文件因为本身的安全性和保密性导致不易编辑,想要编辑PDF文件需要专业的编辑工具来进行. 那么如何给PDF文件添加文本框工具呢?这有一款专业的编辑工具迅捷PDF编辑器,下面就一起来看看它是如何实现PDF文件添加文本框的吧!一.运行下载安装好的PDF编辑器软件打开进入到首页,在首页找到并点击[打开更多文件]按钮把准备好的PDF文件添加到软件上:二.