0

私はこのクラスを持っています:

 public class Section
{
    [Key]
    public int SectionId { get; set; }
    public string Titre { get; set; }
    public virtual List<String> Tag { get; set; }

    public virtual ICollection<Ressource> Ressources { get; set; }
    public Section() { this.Tag=new List<string>(); }
}

createsection ビューでは、スペースまたはその他の文字で区切られたタグを含む文字列をコントローラーに送信し、この文字列を次のようなリストに分割します。

[Authorize]
    [HttpPost]
    [InitializeSimpleMembership]
    public ActionResult CreerSection(Section section, string tags)
    {
        if (ModelState.IsValid)
        {
            //section.Id = WebSecurity.GetUserId(User.Identity.Name);
            char[] delimiterChars = { ' ', ',', '.', ':', '\t' };

            section.Tag = tags.Split(delimiterChars).ToList();
            _db.Entry(section).State = EntityState.Added;
            _db.SaveChanges();
            return RedirectToAction("Index" );
        }
        return View();
    }

「section.Tag =" 行の横にブレーク ポイントを置いたところ、タグ リストに createview から送信されたすべてのタグ (つまり、「tag1」「tag2」「tag3」) が含まれていることに気付きました。ここまで完璧...

次に、別のビューであるセクション ビューで、すべてのセクション タグを表示したい場合、タグ リストは 0 に等しく、「tag1」、「tag2」、および「tag3」という値が含まれていません。なぜですか?

@model Mocodis.Models.Section
@foreach (string s in Model.Tag)
{
    <p>@s</p>
}

ありがとうございました

4

1 に答える 1

0

オブジェクトが新しい場合は dbSet.add メソッドを呼び出し、オブジェクトが既に存在する場合は dbSet.attach メソッドを呼び出します。このような

_dbset.Add(entity); //object is new (create)
_context.SaveChanges();

または

_dbset.Attach(entity); //object already exists in the dbset (update/modify)
_context.Entry(entity).State = EntityState.Modified;
_context.SaveChanges();

EFを使用していると思います。ところで、なぜ「仮想リスト タグ」を使用しているのですか。これはどのようにデータベースに保存されますか? 別表で?日付がテーブルに追加されたかどうかは既に確認しましたか?

KR

于 2013-07-25T11:53:47.577 に答える