1

を含むサプライヤーエンティティがあります

ID - int
Status - string
Name - string
CreateDate- datetime

ここで説明するように、部分クラスメソッドを使用して上記のエンティティのデータアノテーションを作成しています

[MetadataType(typeof(SupplierMetadata))]
public partial class Supplier
{
    // Note this class has nothing in it.  It's just here to add the class-level attribute.
}

public class SupplierMetadata
{
    // Name the field the same as EF named the property - "FirstName" for example.
    // Also, the type needs to match.  Basically just redeclare it.
    // Note that this is a field.  I think it can be a property too, but fields definitely should work.

    [HiddenInput]
    public Int32 ID;

    [Required]
    [UIHint("StatusList")]
    [Display(Name = "Status")]
    public string Status;

    [Required]
    [Display(Name = "Supplier Name")]
    public string Name;
}

HiddenInputアノテーションは、「属性'HiddenInput'はこの宣言タイプでは無効です。'クラス、プロパティ、インデクサー'宣言でのみ有効です。」というエラーをスローします。

助けてください

4

2 に答える 2

4

エラーは、その属性は「クラス、プロパティ、またはインデクサー宣言」にのみ追加できることを示しています。

public Int32 ID;これらのどれでもありません-それはフィールドです。

プロパティに変更した場合

public Int32 ID { get; set; }あなたはその属性でそれを飾ることができるでしょう。

于 2012-06-14T20:46:03.757 に答える
1

get / setアクセサーがないため、すべてのプロパティが正しく定義されていません。.NETのすべてのプロパティには、ゲッターおよび/またはセッターアクセサーが必要です。コードを次のように変更します。

public class SupplierMetadata
{
    [HiddenInput]
    public Int32 ID { get; set; }

    [Required]
    [UIHint("StatusList")]
    [Display(Name = "Status")]
    public string Status { get; set; }

    [Required]
    [Display(Name = "Supplier Name")]
    public string Name { get; set; }
}
于 2012-06-15T01:15:04.993 に答える