Asp.net mvc ASP.NET MVC-使用表单发布多个复杂对象
在ASP.NET MVC应用程序中,我试图用一个表单提交多个对象。我能够得到简单的类型发布回来,但我有复杂类型的问题。我觉得我模仿了Phil Haack在他的博客文章中提供的例子,但没有运气。甚至连复制他的代码都没有用 我试图填充一组Asp.net mvc ASP.NET MVC-使用表单发布多个复杂对象,asp.net-mvc,form-submit,Asp.net Mvc,Form Submit,在ASP.NET MVC应用程序中,我试图用一个表单提交多个对象。我能够得到简单的类型发布回来,但我有复杂类型的问题。我觉得我模仿了Phil Haack在他的博客文章中提供的例子,但没有运气。甚至连复制他的代码都没有用 我试图填充一组MachineLicenseBillback对象的ProjectNum和TaskNum属性。不幸的是,IList machinePts在发布时总是以null结尾 我错过了什么 课程 public class MachineLicenseBillback {
MachineLicenseBillback
对象的ProjectNum
和TaskNum
属性。不幸的是,IList machinePts
在发布时总是以null结尾
我错过了什么
课程
public class MachineLicenseBillback
{
public MachineLicenseBillback() { }
public virtual int MachineId { get; set; }
public virtual string ProjectNum { get; set; }
public virtual string TaskNum { get; set; }
public virtual string VerifiedFlag { get; set; }
public virtual DateTime? RcdChgDateTime { get; set; }
public virtual string RcdChgAgent { get; set; }
}
行动
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult TrueUp(int id, IList<MachineLicenseBillback> machinePts)
{
// ...
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult TrueUp(int id,IList machinePts)
{
// ...
}
表格
<% using (Html.BeginForm("TrueUp", "Home", new { id = Model.Customer.Id },
FormMethod.Post))
{ %>
<input type="hidden" name="machinePts.Index" value="<%= machine.MachineId %>" />
<input type="text" name="machinePts[<%= machine.MachineId%>].ProjectNum"
value="<%= machine.MachineLicenseBillback.ProjectNum %>" />
<input type="text" name="machinePts[<%= machine.MachineId %>].TaskNum"
value="<%= machine.MachineLicenseBillback.TaskNum %>" />
<input type="submit" value="Submit" />
<% } %>
Scott Hanselman有一个完整的项目绑定列表演练。简而言之,您的控制器方法需要一个
MachineLicenseBillback
数组,而不是IList
public ActionResult TrueUp(int id, MachineLicenseBillback[] machinePts)
{
// ...
}
查看代码,如果要绑定到IDictionary
(而不是ILST),可以在视图中使用键/值对。或者可以在视图中保留当前拥有的代码,并在控制器方法中使用数组作为参数
请特别注意命名约定。如果命名不匹配,模型绑定器将不会拾取数据。MVC 1 RTM的.Index语法已被删除,并重新引入MVC 2。对于MVC1,列表元素必须按顺序编号:machinePts[0],machinePts[1],等等。我也没有成功地使Phil Haack的示例代码正常工作。我还尝试了一些其他绑定到列表的示例,但没有成功。尝试切换TrueUp操作以查找
MachineLicenseBillback
对象数组,我遇到了相同的问题:machinePts在回发时为null
。我读过Hanselman的帖子,但Haack例子中的IList似乎更清晰。那太糟糕了。。。您是否有一个链接,指示从MVC 1 RTM中删除此项的位置?更奇怪的是为什么,考虑到MVC2很快就会推出,这并不重要。简而言之,没有足够的人要求它,所以它被删除,QA资源被转移到其他地方。