我现在的Model是使用了 MetadataType & ScaffoldTable 等属性,然后在 View 里直接用Html.EditorFor就将所有字段显示出来了,但现在有个问题是,如果想在view里动态添加多个元素(如输入框或者下拉框等),不知有什么好的办法?但有一个前提,就是生成的HTML是放在一个fieldset里的,就是说如果动态添加的话,是整个fieldset里所有元素为一组进行添加,类似上传图片时点一个加号就多一个输入框的效果。我现在使用的jquery直接clone整个fieldset,虽然页面效果上看是可以,但有几个问题:1.这样所有控件ID一样(虽然添加时可获取当前元素ID再加上数字什么的,但感觉很麻烦,而且一个fieldset里不止一个元素,也不好操作)2.数据提交后,如何获取这些动态添加的元素?3.如果.NET自动生成的元素里,会添加了如 field-validation-valid 等相关隐藏域的,如果通过JS添加,除非真用clone,否则很难做到完整的复制出来(但使用这个ID不好处理)希望能有高手帮小弟解决以上问题,最后第3个如果确实不行,也可不需要先,主要是显示和获取数据。谢谢啦~~~~

解决方案 »

  1.   

    完全没有必要用到ID,设置不同的name就可以了,而且表单提交接收时是根据name而不是根据id
      

  2.   

    嗯,不管是name or id,其实所遇到的问题也一样的,你有什么好的解决办法吗?
      

  3.   

    jquery直接clone整个fieldset是啥意思,多次复用fieldset吗?
      

  4.   

    其实我想要的效果是点击添加按钮后,就整个fieldset包括里面的元素复制一份出来以达到动态添加多组信息的效果
      

  5.   

    看来还是我自己解决了,使用jquery生成元素时就修改其相关属性,如name & id
     function cloneFieldset(fieldset, element, attribute) {
            fieldset.find(element).each(function () {
                var s = $(this).attr(attribute) + "_" + nel;
                $(this).attr(attribute, s);
                if (element == "input") {
                    $(this).val("");
                }
            });
            return fieldset;
        }var fieldset = $("#floor1 fieldset:first").clone();
    fieldset.find(":first").text(fieldset.find(":first").text() + " " + nel);
    var cloneObj = cloneFieldset(fieldset, "input", "id");
    $("#floorPlans").append(cloneObj);
    这样生成后在服务器端再做相关的循环处理就可以了