【发布时间】:2019-01-23 12:31:21
【问题描述】:
我有一个 for 循环来在表单上生成字段。
如何根据当前索引设置asp-for的值?
<label asp-for=@("Value" + i) class="control-label"></label> 不起作用。
【问题讨论】:
-
呃什么?不清楚你在问什么。在 asp-for 中,您传递了 models 属性。您是否将其与 HTML 的
<label for="someid">混淆了?当您遍历一个数组时,您已经拥有对该项目的引用。一世。 .foreach(var item in Model) { ...}那么你有一个对item的引用,所以你可以在asp-for中使用它,比如asp-for="item.Value"或asp-for="item.Name",这取决于你在模型类上的属性是如何命名的 -
“不起作用”是什么意思?
@("Value" + i)的输出是什么?你期待什么?有错误信息吗? -
你不能。为
asp-for传递的值必须是ModelExpression。它不能采用表示属性的通用字符串值。不过,FWIW 拥有Value1、Value2、Value3等属性几乎总是错误的。请改用集合类型:即Values。然后,您在这里尝试做的事情是微不足道的,因为您只是在索引该集合,可以表示为ModelExpression。 -
Tseng>>>我的模型有几个属性Value1...Value31。根据某些条件,我需要提供输入字段或隐藏字段。所以for循环更像
for(int i = 1; i <= 31; i++) { /* tag helper for each property */ }Wndrr >>>我得到一个错误InvalidOperationException: Templates can be used only with field access, property access, single...
标签: razor asp.net-core tag-helpers asp.net-core-tag-helpers