信息:迭代似乎被忽略?
我有「屬性」列表來遍歷,它似乎忽略迭代(儘管迭代作品)。老實說,我不知道發生了什麼。我一步步走過調試器,它只是神祕地不起作用。
我的Razor視圖:
@using (Html.BeginForm())
{
for (Int32 I = 0; I < this.ViewData.Model.Properties.Count; ++I)
{
@Html.EditorFor(m => m.Properties._Properties[I], "Property")
}
}
物業EditorTemplate
@model NMBS.EntityModels.Property
@Html.HiddenFor(p => p.ID)
@Html.LabelFor(p => p.Name)
@Html.HiddenFor(p => p.DataType)
@Html.HiddenFor(p => p.ValueFormat)
@Html.TextBoxFor(p => p.Value.Value)
@Html.HiddenFor(p => p.Value.DataType)
@Html.HiddenFor(p => p.Value.ValueFormat)
<br />
問題:
的輸出爲預期除了在控件的值。它們都是m.Properties [0]中的值,當我逐步通過for循環時,我檢查了I的值,並且它正在增加。 m.Properties [0]和m.Properties [1]不同(在調試時驗證)。
只是爲了澄清:EditorFor創建正確的控件,但值都是從m.Properties [0]而不是m.Properties [I]。儘管循環的每次迭代都會增加。如果我用@Html.EditorFor(e => e.Properties._Properties)
替換for循環,它會執行相同的操作。
問題:任何想法爲什麼它輸出不正確的值,即使它迭代正確?
編輯: 經過進一步檢查,我注意到,它試圖把正確的值在TextBoxFor Value.Value,但是LabelFor名稱不正確,總是顯示「姓名」。
*但是LabelFor名稱是不正確的,總是顯示「名稱「*你期待它展示什麼? –
該物業的名稱。 m.Properties [0]的名字是「Name」,但m.Proeprties [1]的名字是「Description」。對不起。 – Shelby115
'LabelFor'寫出屬性的名稱,而不是它的值。在所有情況下,屬性名稱都是'Name',因爲...該屬性被稱爲'Name'。除非「屬性」是模型元數據中指定的具有不同顯示名稱的不同類的列表,在這種情況下,您需要將此代碼添加到您的問題中。如果你想要屬性的值而不是名稱,也許你想使用'DisplayFor'而不是'LabelFor'。 –