Asp.net mvc ASP.NETMVC-编辑集合-迭代FormCollection是最好的方法吗?
问了同样的问题,给出了可行的答案,但随着ASP.NETMVC框架的最终确定,我想知道是否有更好的解决方案 如果我有下面的类结构,那么如何创建视图页面,更重要的是如何将数据返回给控制器Asp.net mvc ASP.NETMVC-编辑集合-迭代FormCollection是最好的方法吗?,asp.net-mvc,Asp.net Mvc,问了同样的问题,给出了可行的答案,但随着ASP.NETMVC框架的最终确定,我想知道是否有更好的解决方案 如果我有下面的类结构,那么如何创建视图页面,更重要的是如何将数据返回给控制器 public class Person { public int Id {get;set;} public string Name {get;set;} public IList<TelNos> TelNos {get;set;} } public class TelNos{ publ
public class Person {
public int Id {get;set;}
public string Name {get;set;}
public IList<TelNos> TelNos {get;set;}
}
public class TelNos{
public string Type {get;set;}
public string Number {get;set;}
}
然而,这是现在最好的方法,还是MVC的进一步更新提供了更好的解决方案
谢谢,Richard(据我所知),目前还没有任何更新或最佳实践来处理post上的动态表单。仍然行之有效的方法是对信息进行数据绑定,或者在FormCollection中对其进行迭代。如果您看一下,它可能会帮助您进行数据绑定。或者,在后一种情况下,您可以遍历表单集合,用字符串名调用各种值。虽然这可能会有一些冲突,因为它们都将具有相同的id
"telNo.Type"
"telNo.Number"
你可能需要做一些操作才能让它像这样
"telNo.Type[i]"
"telNo.Number[i]"
其中i是列表中该对象的顺序数字。您还可以使用其他字符串组合为该对象生成唯一id,以便获取类型和编号
"object[i].telNo.Type"
"object[i].telNo.Number"
这实际上取决于您认为如何最好地实现它。有时,让数据绑定用于动态表单可能是一件痛苦的事情,只需遍历集合,然后使用LINQ之类的工具来获取所需的数据/对其进行分组等,就更容易了。谢谢您的回答。你的回答确实给了我一个想法,我认为这与你的建议不同 如果在视图中包含对象的索引,则默认模型生成器将获取值并将其指定给关联对象。查看代码如下:
<% int i=0;
foreach (var telNo in Model.Product.TelNos)
{%>
<p><label for="telNo.Type">Type of Number</label>
<%= Html.TextBox("telNo"+i.ToString()+".Type")%>
<%= Html.ValidationMessage("telNo"+i.ToString()+".Type", "*")%>
</p>
<p><label for="telNo.Number">Type of Number</label>
<%= Html.TextBox("telNo"+i.ToString()+".Number")%>
<%= Html.ValidationMessage("telNo"+i.ToString()+".Number", "*")%>
</p>
<%i++;
} %>
号码类型
号码类型
Richard我喜欢这样一个想法,即链接到
我认为这样比较好有两个原因:
"object[i].telNo.Type"
"object[i].telNo.Number"
<% int i=0;
foreach (var telNo in Model.Product.TelNos)
{%>
<p><label for="telNo.Type">Type of Number</label>
<%= Html.TextBox("telNo"+i.ToString()+".Type")%>
<%= Html.ValidationMessage("telNo"+i.ToString()+".Type", "*")%>
</p>
<p><label for="telNo.Number">Type of Number</label>
<%= Html.TextBox("telNo"+i.ToString()+".Number")%>
<%= Html.ValidationMessage("telNo"+i.ToString()+".Number", "*")%>
</p>
<%i++;
} %>