在MVC中添加动态表单内容

时间:2010-12-20 00:19:56

标签: jquery asp.net-mvc asp.net-mvc-2 dynamic-content

我正在尝试将动态内容添加到我的mvc应用程序中。

我正在使用Steven Sanderson的帖子Editing a variable length list, ASP.NET MVC 2-style,并且由于它,我有一些动态内容。 由于我的应用程序的一些限制,我不得不改变基础礼品类。

问题是现在应用程序无法正常工作。

在我的模型中,我有:

public class Gift
{
    //public string Name { get; set; }
    //public double Price { get; set; }

    public List<string> MyList { get; set; }
}

现在,我在礼物参数

中获得空值
[HttpPost]
public ActionResult Index(IEnumerable<Gift> gifts)
{
    return View("Completed", gifts);
}

有人可以帮我吗?

修改 这是我的查看代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Enviro2011.Models.Gift>>" %>

<asp:Content ContentPlaceHolderID="HeadContent" runat="server">
    <link rel="Stylesheet" href="../../Content/styles.css" />
    <script type="text/javascript">
        $(document).ready(function () {

            $("#addItem").click(function () {
                $.ajax({
                    url: this.href,
                    cache: false,
                    success: function (html) { $("#editorRows").append(html); }
                });
                return false;
            });

            $("a.deleteRow").live("click", function () {
                $(this).parents("div.editorRow:first").remove();
                return false;
            });
        });
    </script>
</asp:Content>
<asp:Content ContentPlaceHolderID="MainContent" runat="server">
    <h2>
        Gift List</h2>
    What do you want for your birthday?
    <% using (Html.BeginForm())
       { %>
    <div id="editorRows">
        <% foreach (var item in Model)
               Html.RenderPartial("GiftEditorRow", item);
        %>
    </div>
    <%: Html.ActionLink("Add another...", "Add", null, new { id = "addItem" }) %>
    <input type="submit" value="Finished" />
    <% } %>
</asp:Content>

EDIT2 我也找到了Phil Haack的帖子Model Binding To A List,并且工作得很好,但我无法实现“添加书”功能!!!

2 个答案:

答案 0 :(得分:5)

问题在于您是在模型中循环而不是模型中的项。

以下是您可以做的事情:

<% foreach (var item in Model.MyList)  // <-- Add the ".MyList"
       Html.RenderPartial("GiftEditorRow", item);
%>

我们假设你的局部视图只收到一个字符串。

就你的Ajax调用不起作用而言,问题是你尝试提交两次,一次使用actionLink,另一次使用Ajax。将ActionLink更改为显式链接,后面没有任何操作:

<a id="addItem">Add another ...</a>

然后你的jQuery Ajax调用将会激活。

答案 1 :(得分:0)

你是否对控制者采取了以下行动

public ActionResult Add()
{
    return View(“GiftEditorRow”,new MyList());
}