【问题标题】:String List doesnt save values and keeps being empty字符串列表不保存值并保持为空
【发布时间】:2013-07-24 09:19:51
【问题描述】:

我有这门课:

 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”)。到目前为止完美...

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

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

谢谢

【问题讨论】:

    标签: asp.net-mvc string list initialization


    【解决方案1】:

    我宁愿在对象是新的时调用 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。顺便说一句,你为什么使用“虚拟列表标签”。这是如何保存到数据库中的?在单独的表中?您是否已经检查过日期是否已添加到表格中?

    【讨论】:

    • 其实它并没有保存到数据库中,我认为没有必要......但我认为它没有成功,因为列表标签与该部分无关,并且每次我调用时列表,我得到一个新的,这就是为什么它总是空的...为了修复它,我将数据库中的标签作为字符串(包含所有用空格分隔的标签)属性集成到 Section 表中。当我想获取标签列表时,我使用一个函数来拆分字符串并将标签放入列表中。是的,我正在使用 EF。谢谢
    • 确实,要将标签保存为字符串,需要将它们保存在数据库中。每当您调用对象时,您都可以访问保存的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多