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