Asp.net 当涉及阵列时,不引人注目的窃听器被发现
我有以下电话:Asp.net 当涉及阵列时,不引人注目的窃听器被发现,asp.net,asp.net-mvc,razor,asp.net-mvc-4,unobtrusive-validation,Asp.net,Asp.net Mvc,Razor,Asp.net Mvc 4,Unobtrusive Validation,我有以下电话: @Html.TextBoxFor(m => m.SelectedName) @Html.TextBoxFor(m => m.Selections[0].Name) 在这两种情况下,我分别用以下注释标记SelectedName和Name [Required(ErrorMessage = "Please provide required value")] 但是,SelectedName会打印正确的不引人注目的html属性: <input
@Html.TextBoxFor(m => m.SelectedName)
@Html.TextBoxFor(m => m.Selections[0].Name)
在这两种情况下,我分别用以下注释标记SelectedName
和Name
[Required(ErrorMessage = "Please provide required value")]
但是,SelectedName会打印正确的不引人注目的html属性:
<input id="SelectedName" name="SelectedName" data-val="true" data-val-required="Please provide required value">
===============================表格====================
public class ContainerVM
{
[Required]
public string SelectedName {get;set;}
public MemberVM[] Selections {get;set;}
}
public class MemberVM
{
[Required]
public string Name { get;set; }
}
@using MyProject.Models;
@model ContainerVM
@{
ViewContext.FormContext = new FormContext(); //This is just a hack because the parent isn't defined yet.
}
@Html.TextBoxFor(m => m.SelectedCptGroupId)
@Html.TextBoxFor(m => m.CptGroupSelections[0].Name)
在获得更多反馈之前,我不太愿意给出答案,但是
[必需]
注释不能应用于数组或复杂对象
您可以为类的特定元素甚至嵌套类的成员应用[必需]
注释
显然,我们都知道我们可以诠释经典
[required]
public string SelectedName {get; set;}
这应该行得通。我不能谈论这个问题
但是,相反地,字符串数组上的注释
[required]
public string[] SelectedName {get;set;}
将失败。要成功,必须对模型的每个元素进行注释
同样,如果我们试图用成员注释嵌套模型
[必需]
公共选择模型选择{get;set;}
这也会失败。
最糟糕的是,看起来您正在尝试注释一组模型
[必需]
公共选择模型选择[]{get;set;}
这将再次失败。
什么应该有效(尽管我还没有尝试): 注释嵌套模型选择的每个元素。 然后,数组的每个模型的每个元素都需要输入
public class SelectionsModel
{
[required]
public string name {get; set;}
[required]
public int age { get; set; }
}
请分享你的选择声明以及你的注释,也许我误解了。您还没有注释数组?是的,数组模型的成员(名称)是必需的@DaveA不,我对数组的成员类型进行了批注。请共享您的整个表单。我希望会有什么事情发生,戴夫,我已经在晚些时候做了。我正在注释数组的每个元素。它失败了。@Alwyn:Krp。请共享您的模型声明和注释。也许我们可以发现一些令人讨厌的东西。我也有同样的问题,低调不是为了验证而被解雇的。
public class SelectionsModel
{
[required]
public string name {get; set;}
[required]
public int age { get; set; }
}