【发布时间】:2012-07-03 10:14:35
【问题描述】:
我想在 MVC 3 的提交按钮上获取动态添加的文本框的值。
我将值存储在隐藏字段中并使用 FromCollection。有没有更好的办法?
【问题讨论】:
标签: asp.net-mvc-3 model-view-controller
我想在 MVC 3 的提交按钮上获取动态添加的文本框的值。
我将值存储在隐藏字段中并使用 FromCollection。有没有更好的办法?
【问题讨论】:
标签: asp.net-mvc-3 model-view-controller
如果你将你的价值观命名为 MyValues[x] 其中 x 是一个从零开始的连续递增整数,您可以将字符串值作为名为 MyValues 的字符串列表接收。
如果需要,此技巧也适用于主模型对象的属性。
你应该查看一些关于如何在 ASP mvc 中绑定到集合的文章,它们可以给你一些想法。
例如http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
【讨论】:
你可以做这样的事情(在编辑器之外写得很快,所以可能有错别字/问题): 制作视图模型:
public class DynamicTextBoxViewModel
{
public IList<string> DynamicTextBox { get; set; }
public int OtherStuffInViewModel { get; set; }
}
然后在你的Get 行动中:
var model = new YourViewModel
{
DynamicTextBoxList =
new List<DynamicTextBox>
{
new DynamicTextBox
{
TextBoxText = string.Empty,
}
},
OtherStuffInViewModel = xxx,
};
return View(model)
然后在你的Post 行动中:
您可以将所有内容绑定到您想要的位置。
这个想法是将所有数据移动到 ViewModel 中并传递它,这样您就可以获得 ViewModel 的好处,而不是传递 FormCollection - 这更草率且更容易出错。
【讨论】: