字符串列表不保存值并保持为空

时间:2013-07-24 09:19:52

标签: asp.net-mvc string list initialization

我有这堂课:

 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 =”行旁边放了一个断点,我发现标签列表现在包含了从createview发送的所有标签(即:“tag1”“tag2”“tag3”)。到目前为止完美......

然后在另一个视图中,剖面视图,当我想显示所有的部分标签时,标签列表等于0并且不包含值“tag1”“tag2”和“tag3”为什么?

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

谢谢

1 个答案:

答案 0 :(得分: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。顺便问一下,你为什么要使用'虚拟列表标签'。这是如何保存到数据库的?在另一张桌子上?您是否已经检查过日期是否已添加到表中?