ASP.NET MVC 5 - LabelFor 显示 属性 名称而不是值,但 TextBoxFor 可以正常使用相同的 属性
ASP.NET MVC 5 - LabelFor displays property name instead of value, but TextBoxFor works fine with the same property
我正在处理分配了 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>
}
型号class:
public class MyModel
{
public string Code { get; set; }
public double Price { get; set; }
}
@Html.TextBoxFor(m => m[i].Code)
也可以正常工作,所以这个问题显然与 属性 本身无关。
我可以只使用 Label()
,但我需要 POST 表单中的值,所以我还必须为 Code
添加一个隐藏字段,我觉得它不是最优雅的解决方案。
为什么 TextBoxFor
有效,但 LabelFor
无效?
LabelFor
显示字段的名称(用于为控件创建标签)。
如果要显示字段的值,请使用DisplayFor
:
<tr>
<td>@Html.DisplayFor(m => m[i].Code)</td>
<td>@Html.TextBoxFor(m => m[i].Price)</td>
</tr>
注意: DisplayFor
仅显示提交表单时不包含的文本值(如标签)。如果您需要使用 form/model 返回值,那么您需要添加一个隐藏字段。您可以使用 @Html.HiddenFor(m => m[i].Code)
这将创建一个隐藏的输入,呈现为 <input type="hidden" name="myModels[0].Code" value="abc" />
.
LabelFor
的第一个参数定义了标识要显示的属性的表达式,第二个参数显示的是texl标签。
@for (var i = 0; i < Model.Count; i++)
{
<tr>
<td>@Html.LabelFor(m => m[i].Code, Model[i].Code)</td>
<td>@Html.TextBoxFor(m => m[i].Price)</td>
</tr>
}
我正在处理分配了 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>
}
型号class:
public class MyModel
{
public string Code { get; set; }
public double Price { get; set; }
}
@Html.TextBoxFor(m => m[i].Code)
也可以正常工作,所以这个问题显然与 属性 本身无关。
我可以只使用 Label()
,但我需要 POST 表单中的值,所以我还必须为 Code
添加一个隐藏字段,我觉得它不是最优雅的解决方案。
为什么 TextBoxFor
有效,但 LabelFor
无效?
LabelFor
显示字段的名称(用于为控件创建标签)。
如果要显示字段的值,请使用DisplayFor
:
<tr>
<td>@Html.DisplayFor(m => m[i].Code)</td>
<td>@Html.TextBoxFor(m => m[i].Price)</td>
</tr>
注意: DisplayFor
仅显示提交表单时不包含的文本值(如标签)。如果您需要使用 form/model 返回值,那么您需要添加一个隐藏字段。您可以使用 @Html.HiddenFor(m => m[i].Code)
这将创建一个隐藏的输入,呈现为 <input type="hidden" name="myModels[0].Code" value="abc" />
.
LabelFor
的第一个参数定义了标识要显示的属性的表达式,第二个参数显示的是texl标签。
@for (var i = 0; i < Model.Count; i++)
{
<tr>
<td>@Html.LabelFor(m => m[i].Code, Model[i].Code)</td>
<td>@Html.TextBoxFor(m => m[i].Price)</td>
</tr>
}