ASP.NET MVC和JQuery动态表单内容

blu*_*blu 6 c# asp.net-mvc jquery

我想用JQuery动态地将字段添加到ASP.NET MVC表单.

例:

<script language="javascript" type="text/javascript">
    var widgets;

    $(document).ready(function() {
        widgets = 0;
        AddWidget();
    });

    function AddWidget() {
        $('#widgets').append("<li><input type='text' name='widget" + widgets + "'/></li>");
        widgets++;
    }
</script>

<ul id="widgets">
</ul>
Run Code Online (Sandbox Code Playgroud)

这有效,但我打算手动迭代控制器中的表单值:

[AcceptVerbs("Post")]
public ActionResult AddWidget(FormCollection form)
{
    foreach (string s in form)
    {
        string t = form[s];
    }

    return RedirectToAction("ActionName");
}
Run Code Online (Sandbox Code Playgroud)

但是当我将用户发送回Controller中的Get Action时,我会发现我必须使用输入的值设置FormData,然后使用<%scripting迭代添加小部件.

在当前版本中有什么最好的方法(我相信5)?

Edu*_*eni 4

我的解决方案可能是这样的(伪代码):

<script language="javascript" type="text/javascript">
    var widgets;

    $(document).ready(function() {
        widgets = 0;
        <% for each value in ViewData("WidgetValues") %>
             AddWidget(<%= value %>);
        <% next %>
    });

    function AddWidget( value ) {
        $('#widgets').append("<li><input type='text' name='widget" + widgets + 
                             "'>" + value + "</input></li>");
        widgets++;
    }
</script>

<ul id="widgets">
</ul>
Run Code Online (Sandbox Code Playgroud)

在控制器中:

[AcceptVerbs("Post")]
public ActionResult AddWidget(FormCollection form)
{
    dim collValues as new Collection;
    foreach (string s in form)
    {
        string t = form[s];
        collValues.add( t )
    }
    ViewData("WidgetValues") = collValues;
    return RedirectToAction("ActionName");
}
Run Code Online (Sandbox Code Playgroud)

你可以稍后再解决细节
(抱歉将 VB 与 C# 混合在一起,我是 VB 人)