我的Razor页面中有输入字段,这些字段是使用foreach循环加载的。例如:
@foreach (var item in Model.DataList.Where(p => p.SubmittedBy == user.SubmittedBy))
{
<input asp-for="AllTable.RefNumber" name="@item.Id" class="form-control" placeholder="Comments (optional)">
}
AllTable是模型,RefNumber是属性
我还有一个自定义验证类,可使用此类来验证文本框的值:
var refNumber = (string)validationContext.ObjectType.GetProperty(validationContext.MemberName).GetValue(validationContext.ObjectInstance, null);
就目前而言,refNumber为null。如何在保留唯一名称属性的同时验证字段?如果我删除了唯一名称,则可以正常工作,但是当发生验证错误时,它将针对所有相同字段显示,因为名称与asp-for相同。
谢谢
答案 0 :(得分:1)
因为这是一个剃须刀页面,您将无法从ObjectInstance访问模型,因为我认为当前不支持该模型,但是传递的值将是您的列表对象。
var myList = value as ApprovedList;
var refNames = myList.Select(s => s.RefName);
此外,您从列表中添加输入的方式将不允许它绑定到模型。将会是这样的。
<input asp-for="AllTable[i].RefNumber" class="form-control" placeholder="Comments (optional)">