如何在MVC 3中获取值动态添加的文本框值

时间:2012-07-03 10:14:36

标签: asp.net-mvc-3 model-view-controller

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

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

2 个答案:

答案 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 - 这更加容易且更容易出错。