我想在MVC 3中的提交按钮上获取动态添加的文本框的值。
我将值存储在隐藏字段中并使用FromCollection。有没有更好的方法?
答案 0 :(得分:1)
如果你将你的价值命名为 MyValues [x]其中x是一个基于零的连续递增的整数,您可以将字符串值作为名为MyValues的字符串列表接收。
如果需要,这个技巧也适用于主要模型对象的属性。
你应该查看一些关于如何绑定到集合的文章在ASP mvc中,他们可以给你一些想法。
例如http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
答案 1 :(得分:1)
你可以做这样的事情(在编辑器之外写得很快,所以可能有拼写错误/问题): 制作一个视图模型:
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 - 这更加容易且更容易出错。