0

如果“model.count()”为 5,@Html.EditorForModel(Model.ElementAt(i)) 的真正工作原理。为什么我会得到“5*5”元素的维度?

@model List<model>
@for (int i = 0; i < Model.Count();i++ )
{                
    @Html.EditorForModel(Model.ElementAt(i))                
}

实际上给了我5个元素的唯一尝试是:

@model List<model>

@Html.EditorForModel(Model)                

在模型模板中,我使用 Javascript 来更改 model.Numbers 的值,使用“GetElementById("NumbersX")”:

 @Html.TextBoxFor(m => m.Numbers, new { id = "NumbersX" })

有谁知道更好的实现方式或已经实现的功能来执行此任务?

4

1 回答 1

1

EditorForModel输出整个模型的编辑器。

你的模型有五个元素,所以一个“整个编辑器”就是五个元素。
你调用它五次,所以你得到 5x5 个元素。

你可能打算打电话EditorFor,不是EditorForModel

@Html.EditorFor(m => m.ElementAt(i)) 

但这也不会像您期望的那样工作。然而,因为你有一个 List 作为你的模型,你可以让它正常工作:

@Html.EditorFor(m => m[i]) 

您调用的重载接受Object additionalViewData作为其参数。你传递了一个 lambda,就好像你在调用EditorFor,而那个 lambda 根本什么都不做。

于 2014-08-16T13:08:18.113 回答