2012-10-03 41 views
3

我們MVC3模型包含字符串這樣ValidationMessage爲MVC3收集

[CannotBeEmpty(ErrorMessageResourceName = "ColorCodes", ErrorMessageResourceType = typeof(Resources.Strings))] 
[Display(ResourceType = typeof(Resources.Strings), Name = "ColorCodes")] 
public List<string> ColorCodes { get; set; } 

我顯示使用

<div class="editor-field colors"> 
    @Html.EditorFor(model => model.ColorCodes) 
    @Html.ValidationMessageFor(model => model.ColorCodes) 
</div> 

我的問題是myValidationMessageFor只呈現1列,而在這種模式在我看來,一個集合下面的例子中,EditorForReders 3個輸入字段。

<input class="text-box single-line" id="ColorCodes_0_" name="ColorCodes[0]" type="text" value="#d6c0d6"> 
<input class="text-box single-line" id="ColorCodes_1_" name="ColorCodes[1]" type="text" value=""> 
<input class="text-box single-line" id="ColorCodes_2_" name="ColorCodes[2]" type="text" value="#fcfcfc"> 
<span class="field-validation-valid" data-valmsg-for="ColorCodes" data-valmsg-replace="true"></span> 

正如你可以看到data-valmsg-for包含「ColorCodes」這是錯誤的。它應該包含ColorCodes_0_,ColorCodes_1_和ColorCodes_2_。 如何在模型包含集合時使用ValidationMessageFor。

回答

3

您可以在for循環中迭代模型並接收預期結果。

@for(int i = 0; i < Model.ColorCodes.Count; i++) 
{ 
    @Html.EditorFor(model => model.ColorCodes[i]) 
    @Html.ValidationMessageFor(model => model.ColorCodes[i]) 
}