私はデータベースからモデルのインデックスを提示するために使用しているモデルを持っており、スペースが必要な行の一部に表示名を付けました(つまり、dbのweekstartingには「Week Starting」の表示名)。@ Html.LabelForおよびW3C Validatorと競合していますか?
だから私はこのように私のモデルの表示名を設定:
[DisplayName("Week Starting")]
public DateTime WeekStarting { get; set; }
をして、私のテーブルのテーブルヘッダに私は、その指定した表示名を使用して、フィールド名を表示するには、次のコード行を使用します。
@Html.LabelFor(x => x.First().WeekStarting)
上記はすべて正常です。しかし、私はW3Cバリデーターを使用しています。これは私が与えた例で私に次のエラーを与えています。
ラベル要素のfor属性はフォームコントロールを参照する必要があります。
私には明らかですが、私はここで間違っていますか?私はフォームを使用していません。単にテーブルのアイテムのインデックスを表示しています。私は答えを探してみると、誰かが(私はフォームを使用していないけれども)idsを必要とする参照されているフォームのコントロールを提案して見たが、これはこのインスタンスでは適用されませんので、それは、インデックスの各項目と重複されるだろうインデックス:
foreach (var item in Model.Tbms)
{
<tr><td>@item.value</td><tr>.... would be repeated for each item, and also unsure where I would put the id in any case, the td?
}
あるいは、最初の場所で私の好みの表示名を指定して、フィールドのヘッダーにラベルを付けるには良い方法はありますか?私はちょうど@ Html.LabelForを交換することができたと思います...ハードコードフィールド名のために私はする必要がありますか?
ありがとうtvanfosson、試してみる – DevDave
あなたが望むのであれば、それは実際にはTHを生成することができることに注意してください。その場合、単にTagBuilderを使って 'TH'を構築し、' headerText'をタグのInnerTextとして追加します。ただし、HTML属性を受け入れるためにシグネチャを変更する必要があります。その場合、コードを追加する必要があります。どのように動作させるかについては、http://codeplex.com/aspnetのMVCソースコードを参照してください。 – tvanfosson