在asp.net mvc中帮助jquery ajax和模板

时间:2011-03-04 23:12:52

标签: jquery asp.net-mvc ajax jquery-templates

所以我有一个复杂的形式,用于IncomeDeclaration。

它将显示与IncomeDeclaration相关的每个Activity的文本字段GrossIncome ...这一切都在服务器上完成并且工作正常....问题是。用户还应该能够动态添加活动...通过javascript ...所以当用户点击Add Activity时,一个Dropdown和一个textfield必须被追加到底部的活动列表......这是我到目前为止所得到的

<tbody id="activities">
            @Html.EditorFor(model => model.income.EconomicActivityIncomeDeclarations)

            </tbody>
        </table>
        <a href="#" id="add_activity">Agregar Otra Actividad</a>

    </fieldset>

    <script type="text/javascript">
        $("#add_activity").click(function () {

            $.getJSON('/IncomeDeclarations/GetEconomicActivities', function (data) {
                var select = new Select();
                var data = new Array();

                for (var i = 0; i < data.length; i++) {
                    var option = new Option(data[i]["name"], data[i]["i"])
                    //should do something here
                }


                //should call the template and append to #activities
            });
        });
</script>


    <script id="template" type="text/x-jquery-tmpl">
    <tr>
        <td><select name="income.EconomicActivityIncomeDeclarations[${SomeNumber}].EconomicActivityId">
        ${MyOptions}        
        </select></td>
        <td><input type="text" name="income.EconomicActivityIncomeDeclarations[${SomeNumber}].GrossIncome" /></td>>
    </tr>
</script>

}

select和text_field的name属性是这个工作的关键...否则modelbinding不会工作......我认为如果SomeNumber变量设置为new Date.GetTime()模型Binding应该工作很好......

我实际上没有看到ajax的需要,但这是另一个话题..我只是想办法在没有ajax的情况下做到这一点...... 现在我想让模板工作,并将表单元素附加到列表的底部。