我正在尝试将动态内容添加到我的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,并且工作得很好,但我无法实现“添加书”功能!!!
答案 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());
}