HTML.LabelFor 未正确呈现
HTML.LabelFor doesn't render properly
我正在尝试像这样使用 Html.LabelFor,但它没有正确呈现,即没有像 "AT&T" 那样显示 ProviderName 值,它只显示 ProviderName
文本而不是 ProviderName
的值ProviderName
.
<div id="ServiceProvider" class="main_filter" name="filterDiv">
<h4>Service Providers</h4>
@for (var i = 0; i < allProviders.Count(); i++)
{
<div class="filter_chkbox_div">
@Html.CheckBoxFor(m => allProviders[i].Selected, new { value = allProviders[i].ProviderCode, id = allProviders[i].ProviderCode, style="display:none" })
@Html.LabelFor(m => allProviders[i].ProviderName)
</div>
}
而当我这样使用 Html.DisplayFor 时:
<label>@Html.DisplayFor(m => allProviders[i].ProviderName)</label>
它显示 ProviderName 的值。我的代码有什么问题?我想使用 Html.LabelFor。请帮助
LabelFor()
的目的是显示 属性 的名称(或者如果 属性 包含 [Display]
属性,则其 Name
属性),并将其与表单控件相关联(单击它会将焦点设置到控件)。
但是有 overloads 允许您指定要显示的文本,因此在您的情况下它将是
@Html.LabelFor(m => allProviders[i].ProviderName, allProviders[i].ProviderName)
这将生成
<label for="allProviders_0__ProviderName">AT&T</label>
但是这不会作为标签(设置焦点),因为您已经覆盖了关联控件的 id
属性。不清楚您为什么要这样做(如果 ProviderCode
不是唯一的,那么您会生成无效的 html),但您应该从 CheckBoxFor()
方法中删除 new { id = allProviders[i].ProviderCode }
以便生成默认 id
属性 (id="allProviders_0__ProviderName"
)。
旁注:您使用 new { value = allProviders[i].ProviderCode }
意味着模型绑定将失败(在使用 HtmlHelper
方法时,您不应该设置 value 属性)。你的 属性 Selected
是 typeof bool
但 ProviderCode
不是。您正在生成一个无法绑定到 bool
的值属性,结果将是,如果复选框被选中,它将提交(比如)"ABC",绑定将失败并且值将设置为false
,如果不勾选,该值也会设置为false
.
我正在尝试像这样使用 Html.LabelFor,但它没有正确呈现,即没有像 "AT&T" 那样显示 ProviderName 值,它只显示 ProviderName
文本而不是 ProviderName
的值ProviderName
.
<div id="ServiceProvider" class="main_filter" name="filterDiv">
<h4>Service Providers</h4>
@for (var i = 0; i < allProviders.Count(); i++)
{
<div class="filter_chkbox_div">
@Html.CheckBoxFor(m => allProviders[i].Selected, new { value = allProviders[i].ProviderCode, id = allProviders[i].ProviderCode, style="display:none" })
@Html.LabelFor(m => allProviders[i].ProviderName)
</div>
}
而当我这样使用 Html.DisplayFor 时:
<label>@Html.DisplayFor(m => allProviders[i].ProviderName)</label>
它显示 ProviderName 的值。我的代码有什么问题?我想使用 Html.LabelFor。请帮助
LabelFor()
的目的是显示 属性 的名称(或者如果 属性 包含 [Display]
属性,则其 Name
属性),并将其与表单控件相关联(单击它会将焦点设置到控件)。
但是有 overloads 允许您指定要显示的文本,因此在您的情况下它将是
@Html.LabelFor(m => allProviders[i].ProviderName, allProviders[i].ProviderName)
这将生成
<label for="allProviders_0__ProviderName">AT&T</label>
但是这不会作为标签(设置焦点),因为您已经覆盖了关联控件的 id
属性。不清楚您为什么要这样做(如果 ProviderCode
不是唯一的,那么您会生成无效的 html),但您应该从 CheckBoxFor()
方法中删除 new { id = allProviders[i].ProviderCode }
以便生成默认 id
属性 (id="allProviders_0__ProviderName"
)。
旁注:您使用 new { value = allProviders[i].ProviderCode }
意味着模型绑定将失败(在使用 HtmlHelper
方法时,您不应该设置 value 属性)。你的 属性 Selected
是 typeof bool
但 ProviderCode
不是。您正在生成一个无法绑定到 bool
的值属性,结果将是,如果复选框被选中,它将提交(比如)"ABC",绑定将失败并且值将设置为false
,如果不勾选,该值也会设置为false
.