c# - 如何使用 ASP.NET Core 中的自定义验证在索引处获取属性?
问题描述
我的 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 为空。如何在保留唯一名称属性的同时验证字段?如果我删除唯一名称,它可以正常工作,但是当发生验证错误时,它会针对所有相同的字段显示,因为名称与 asp-for 相同。
谢谢,
解决方案
因为它是一个剃须刀页面,所以您将无法从 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)">
推荐阅读
- python - 如何使用 MYPY 传递关键字参数?
- python - 来自 sklearn 的关于 SVC 对象的 `decision_function_shape` 参数的说明
- fft - 如何在频域中过滤时间序列数据
- postgresql - 如何在 Postgres 函数中使用文本输入作为列名?
- python - Scikit-Learn - 如何从 RandomForestRegressor 获得非归一化的重要性分数
- javascript - 使用铬在网页上为组合框和网络列表框设置相同的值
- vuejs3 - Vue v-for循环绑定对象键选择元素
- redirect - 如何从电子邮件中检索嵌入式 vcard?
- c++ - 为什么从 DLL 加载一块内存只会在第二次调用 memmove 时崩溃?
- php - *错误* Joomlamailer 用户插件配置中未选择列表