2013-07-24 72 views
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 =」行一個突破點,而且我注意到,標籤列表現在包含了所有的標籤(即:「標籤1」,「標籤2」 「tag3」)從createview發送。完美到目前爲止......

然後在不同的視圖中,截面視圖中,當我想顯示所有節標籤時,標籤列表等於0並且不包含值「tag1」,「tag2」和「 tag3「爲什麼?

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

謝謝

回答

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。順便說一句,你爲什麼使用'虛擬列表標籤'。這是如何保存到數據庫?在一個單獨的表中?你是否已經檢查日期是否添加到表格中?

+0

其實它不是保存到數據庫中,我認爲沒有必要是...但我認爲它沒有工作,因爲列表標籤心不是與節,當我打電話,每次相關該列表,我得到一個新的,這就是爲什麼它總是空的... 要修復它,我把標籤集成到數據庫中作爲一個字符串(包含空格分隔的所有標籤)屬性。當我想要獲取標籤列表時,我使用了一個函數來分割字符串並將標籤放入列表中。是的,我正在使用EF。謝謝 – caj

+0

確實,要將標籤作爲字符串保存,需要將它們保存在數據庫中。每當您回想起您的對象時,您將可以訪問保存的數據。 – Bastaspast