@model与数组的动态绑定

时间:2014-12-04 15:55:31

标签: asp.net-mvc

我有一个我希望通过View显示的数据类,允许用户更改它,并通过数据绑定将其恢复。我想通过@model动态做到这一点。这可能吗?

这是我的模特

public class MyData
    {
        public int A { get; set; }
        public string B { get; set; }
    }

发送到这样的视图

public ActionResult Index()
    {
        MyData[] myDataList = new MyData[2];
        myDataList[0] = new MyData() { A = 2, B = "Fred" };
        myDataList[1] = new MyData() { A = 3, B = "Sue" };

        dynamic charts = (from ch in myDataList
                          select new
                          {
                              ch.A,
                              ch.B
                          }).AsEnumerable().Select(c => c.ToExpando());

        return View(charts);
    }

有这样的观点(这是错误的)

@model IEnumerable<dynamic>

@foreach (dynamic item in Model)
{
    <text>
    @Html.TextBox("item.B")
    </text>
}

我在这里挣扎了一下,因为我不知道这是否可能,我找不到很多@model动态的复杂例子

要说清楚,这个例子是学术性的,我想要的是了解asp mvc中动态模型的可能性

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:1)

在您的观点中尝试此操作:

@for(int i = 0; i < Model.Lenght; i++)
{
   @Html.TextBoxFor(model => model[i].A)
   @Html.TextBoxFor(model => model[i].B)
}

答案 1 :(得分:0)

虽然你可以让它发挥作用,但我不推荐它。

简单修复恕我直言,将ExpandoObject直接用作model。将它转换为dynamic毫无意义。