1

次の3つの注釈の違いは何ですか。

[ScaffoldColumn(false)]
[Display(Name = "")]
[Display(AutoGenerateField=false)]

関連するSOの質問があちこちにありますが、3つすべてをカバーするものはないと思います。AutoGenerateField=falseは何も達成しないと主張するSOの投稿も見ました。もしそうなら、それは何のためですか?他の2つの注釈(ScaffoldColumn(false)とDisplay(Name = ""))については、同等ですか?

4

2 に答える 2

4
  1. ScaffoldColumn(false):またはを使用する場合にのみ、およびデフォルトの表示テンプレートとエディターテンプレートを使用している場合にのみ、表示フィールドまたはエディターフィールドを非表示にします。組み込みのテンプレートをオーバーライドする場合は、テンプレートでこの属性のサポートを追加し直す必要があります。@Html.DisplayForModel()@Html.EditorForModel
  2. Display(Name="")DisplayForModel: 、、、、およびLabelのラベルとして表示されるテキストに影響します。この場合、表示名は空の文字列に設定されるため、文字通りラベルとして出力されます。これにより、ラベルの生成が妨げられることはありません。LabelForModelEditorForModel
  3. Display(AutoGenerateField=false):あなたが提案したように、デフォルトのテンプレートまたはヘルパーのいずれによっても認識されていないように見えます。

いいえ、1と2は同じではありません。

于 2012-06-20T17:11:12.193 に答える
0

ScaffoldColumn(false)でマークされている場合

public class Hate
{
    [ScaffoldColumn(false)]
    public string What { get; set; }

    public string Why { get; set; }
}

@model StrippingHtml.Models.Hate
@{
  ViewBag.Title = "What & Why You Hate";
}
<h2>
  What & Why You Hate</h2>
@using (Html.BeginForm("Save", "Hate"))
{
  <div>
    @Html.EditorForModel()
  </div>
}

ここに画像の説明を入力してください

Display(Name = "")でマークされている場合

public class Hate
{
    [Display(Name="")]
    public string What { get; set; }

    public string Why { get; set; }
}

ここに画像の説明を入力してください

于 2012-06-20T17:19:43.543 に答える