【问题标题】:Bind Exclude Asp.net MVC doesn't work on LINQ Entity绑定排除 Asp.net MVC 不适用于 LINQ 实体
【发布时间】:2009-05-28 08:02:59
【问题描述】:

我目前设法获得一些时间来研究 ASP.NET MVC。我正在做 教程Create a Movie Database in ASP.NET MVC,它仍然使用 ADO.NET 实体模型。我设法从 LINQ 实体模型创建了一个列表视图。所以这是我的问题。 绑定属性不适用于我的 SQL 实体。

Ado.NET 的原始代码

        public ActionResult Create([Bind(Exclude="Id")] Movie movieToCreate)

        {
             if (!ModelState.IsValid)
                return View(); 

            _db.AddToMovieSet(movieToCreate);
            _db.SaveChanges(); 
            return RedirectToAction("Index");
        } 

我的 LINQ 代码

    public ActionResult Create([Bind(Exclude = "Id")] Movies movieToCreate)
    {
        if (!ModelState.IsValid)
        {
            return View();
        }
        _db_linq.Movies.InsertOnSubmit(movieToCreate);
        _db_linq.SubmitChanges();

        return RedirectToAction("Index");
    }

但不排除 Id 字段。有任何想法吗?谢谢!

【问题讨论】:

  • 为什么你认为它没有被排除?
  • 因为 movieToCreate 仍然包含设置为 0 的 id 字段。但我通过在 db 中将 id 字段声明为身份和主键并在 shema 中声明 autocreated = true 解决了这个问题。

标签: asp.net-mvc linq binding


【解决方案1】:

您的 ID 属性可能是一个 int 并且它不是可为空的类型。正因为如此,即使它在绑定时被排除在外,它也必须有一个值。在这种情况下,它具有其类型的默认值,即零。

确保正确设置数据库,将 ID 字段的 IsIdentity 属性设置为 true 并重新创建 LINQ 类。

【讨论】:

  • 我有一种情况,当我在操作级别而不是类级别中声明它时,排除不起作用。如果我在它工作的实体的部分类上声明它。你知道可能是什么原因
  • @Barbaros Alp,刚刚看到你的问题,(stackoverflow.com/questions/2289456)。而且我认为 Craig Stuntz 的回答是正确的。
  • 是的,我已将其标记为已回答,但为什么当我更改参数顺序时它会起作用?
  • @Barbaros Alp,您没有更改那里的参数顺序。您只是将 Bind 属性应用于错误的参数。
猜你喜欢
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多