我正在使用IList<MyModel>
分配了模型的视图,并且一直坚持用LabelFor
(显示属性名称而不是其值)来显示值,但是,TextBoxFor
即使将其与相同的属性一起使用,一切都可以正常工作。
视图代码的一部分:
@model IList<MyModel>
@for (var i = 0; i < Model.Count; i++)
{
<tr>
<td>@Html.LabelFor(m => m[i].Code)</td>
<td>@Html.TextBoxFor(m => m[i].Price)</td>
</tr>
}
型号类别:
public class MyModel
{
public string Code { get; set; }
public double Price { get; set; }
}
@Html.TextBoxFor(m => m[i].Code)
也可以正常工作,因此问题显然与财产本身无关。
我可以使用just Label()
,但是我需要从表单中发布值,所以我还必须为其添加一个隐藏字段Code
,我觉得这不是最优雅的解决方案。
为什么TextBoxFor
有效,但LabelFor
无效?
LabelFor
显示字段名称(用于为控件创建标签)。
如果要显示字段的值,请使用DisplayFor
:
<tr>
<td>@Html.DisplayFor(m => m[i].Code)</td>
<td>@Html.TextBoxFor(m => m[i].Price)</td>
</tr>
注意: DisplayFor
仅显示提交表单时不包括的文本值(如标签)。如果您需要将值与表单/模型一起返回,则需要添加一个隐藏字段。您可以使用@Html.HiddenFor(m => m[i].Code)
来创建显示为的隐藏输入<input type="hidden" name="myModels[0].Code" value="abc" />
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句