0

私はEntity Framework 5 Code First、WebApi、ASPNET MVC 4を使用するプロジェクトに取り組んでいます。私はこのようなモデルを持っています

public class Category
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }
}

そしてこの構成

public class CategoryMap : EntityTypeConfiguration<Categoria>
{
    public CategoryMap()
    {
        // Primary Key
        this.HasKey(t => t.Id);

        // Properties
        this.Property(t => t.Id)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        this.Property(t => t.Name)
            .HasMaxLength(50);

        this.Property(t => t.Description)
            .HasMaxLength(100);
    }
}

今、私の webapi コントローラー (POST メソッド内) で、送信されたモデルを検証しようとしていますが、それは POST (作成) であり、ID は IDENTITY であるため、null または空になるため、Model.Valid はそれを言います有効じゃない。

public HttpResponseMessage Post(Category category)
{
    if (ModelState.IsValid)
    {
        ...
        return response;
    }

    throw new HttpResponseException(HttpStatusCode.BadRequest);
}

列のタイプを変更し、モデルが有効かどうかを確認しない以外に解決策はありますか?

前もって感謝します!ギレルモ。

4

2 に答える 2

0

Category プロパティ、Name および Description を複製するインターフェイス (ICategory など) を作成し、Category クラスにそのインターフェイスを実装させます。次に、HTTPRespoonseMessge Post メソッドを変更して、タイプ ICategory のパラメーターを取るようにします。

public HttpResponseMessage 投稿 (ICategory カテゴリ) { }

于 2012-12-03T16:49:11.353 に答える
0

私は個人的に WebAPI を使用したことはありませんが、実際のドメイン オブジェクトではなく、WebAPI でビュー モデルを使用する際に問題はありますか?

「CreateCategory」ビュー モデル クラスを作成し、それを POST 動詞にバインドします。このビュー モデルは、ID プロパティやその他の必要な変更を公開しないことを除けば、ドメイン クラスと同じです。検証するプロパティがないため、検証をつまずかせるものは何もありません。

public HttpResponseMessage Post(CreateCategoryViewModel category)

Model.IsValid を使用してビュー モデルを検証し、検証に合格してから、ビュー モデルを実際のモデル オブジェクトにマップします。

ビュー モデルをバインドする標準の MVC アクションとほぼ同じように機能するはずです。

それが役立つことを願っています。

于 2012-11-28T04:09:24.463 に答える