0

我想在 MVC 3 的提交按钮上获取动态添加的文本框的值。

我将值存储在隐藏字段中并使用 FromCollection。有没有更好的方法?

4

2 回答 2

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 - 这更草率且更容易出错。

于 2012-07-03T13:19:15.230 回答
1

如果您将值命名为 MyValues[x],其中 x 是从零开始的连续递增整数,您可以将字符串值作为名为 MyValues 的字符串列表接收。

如果需要,此技巧也适用于主模型对象的属性。

你应该查看一些关于如何在 ASP mvc 中绑定到集合的文章,它们可以给你一些想法。

例如http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

于 2012-07-03T11:40:49.313 回答