1

子カテゴリ/ルートカテゴリを持つことができるカテゴリがあります。ルートカテゴリを他のカテゴリに変更しても機能しますが、(ルートカテゴリにするために)設定しようとしてnullも何も変更されません。それが何か違いを生むなら、私はコードファーストのアプローチを使用しています。

これは私が明示的に述べているコードですcategory.RootCategory = nullが、それは機能しません、ルートカテゴリはまだ以前に設定されたものです。

コントローラ

[HttpPost]
public ActionResult Edit(Category c, int? rootCategoryID)
{
    var category = _db.Categories.Where(x => x.ID == c.ID).Single();

    if (TryUpdateModel(category))
    {
        cateogry.RootCategory = null;
            _db.SaveChanges();
        return Content(Infrastructure.Helpers.SerializeObject(category));
    }

    return Redirect("/admin/category");
}

モデル

public class Category
{
    public int ID { get; set; }
    virtual public Category RootCategory { get; set; }
    virtual public ICollection<Category> ChildCategories { get; set; }
}

アップデート

非常に奇妙な行動。私がそれをデバッグしてゆっくりとステップバイステップで進むと、それは更新されます。私がそれをデバッグしないか、速く実行しないとき、それは更新されません。なぜそうなのかわかりません。

4

1 に答える 1

1

とにかくpublic int? RootCategoryID { get; set; }モデルに追加しましたが、今はそのように編集できます。

[HttpPost]
public ActionResult Edit(Category c)
{
    var cateogry = _db.Categories.Where(x => x.ID == c.ID).Single();

    if (TryUpdateModel(cateogry))
    {
        cateogry.UpdatedDateTime = DateTime.Now;
        _db.SaveChanges();
    }

    return Redirect("/admin/category");
}

現在は機能していますが、実行時にRootCategoryIDなしで機能し、デバッグ時に機能した理由はまだわかりません。

于 2012-10-01T15:44:53.343 に答える