2013-07-24 16 views
0

내가이 클래스 나던하십시오 createsection보기에서문자열 목록 값을 저장하고 유지 비어있는

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>(); } 
} 

를, 내가 컨트롤러에 공백이나 다른 문자로 구분 된 태그를 포함하는 문자열을 보내고 나는이 문자열을 분할 이 같은리스트로 :

[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 ="라인 옆에 브레이크 포인트를 넣어, 내가 태그 목록이 이제 모든 태그를 포함 것으로 나타났습니다 (예 : "이 tag1" "이 tag2" "tag3") createview에서 보냈습니다. 완벽한 지금까지 ...

다른보기에서 모든 섹션 태그를 표시하려고 할 때 섹션 뷰는 태그 목록이 0이고 "tag1", "tag2"및 " tag3 "왜?

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

개체가 새로운 및 개체가 이미 존재하는 dbSet.attach 방법 때

답변

0

차라리 dbSet.add 메소드를 호출 것 감사드립니다. 이

_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를 사용하는 가정합니다. Btw, 왜 '가상 목록 태그'를 사용하고 있습니까? 어떻게 이것을 데이터베이스에 저장합니까? 별도의 테이블에? 날짜가 테이블에 추가되었는지 이미 확인 했습니까?

Kr을 실제로

+0

가 데이터베이스에 저장하고, 내가 할 할 필요가 없다고 생각했다 ...하지만 난 목록 태그 밤은이 부분과 내가 전화를 매번과 관련 있기 때문에 운동 didnt는 생각 않네 목록, 나는 그것이 항상 비어있는 새로운 이유를 얻었습니다 ... 문제를 해결하기 위해 데이터베이스의 태그를 섹션 테이블에 속성 (공백으로 구분 된 모든 태그 포함) 문자열로 통합했습니다. 태그 목록을 가져 오려면 문자열을 분할하고 태그를 목록에 넣는 함수를 사용합니다. 네, EF를 사용하고 있습니다. 고마워요 – caj

+0

사실, 태그를 문자열로 유지하려면 데이터베이스에 태그를 저장해야합니다. 개체를 회수 할 때마다 저장된 데이터에 액세스 할 수 있습니다. – Bastaspast

관련 문제