0

我在使用 mvc4 的实体框架上有一个 C# 程序。

我想知道是否有可能(我确信它是)让 C# 将帖子自动绑定到具有关系的对象。

例如:我有一个 Item 类,它与 User 类有关系:

public class Item
{
    public int ItemId{get;set;}
    public string Name{get;set;}

    public virtual User Owner{get;set;}
}

我有一个带有 post 方法的 ItemController:

public class ItemController
{
    ...
    public HttpResponseMessage PostItem(Item item)
    {
         ....
    }
}

发布和动态绑定如何与具有关系的类一起使用?

4

1 回答 1

1

是的,这是可能的。但是您永远不应该(嗯,几乎永远不)直接发布到 EF 模型。原因很多,但安全性很高,但可维护性和(例如关注点分离)也非常高。

怎么可能是安全问题?假设您的 User 属性有一个字段“IsAdmin”,即使您在视图中没有对 IsAdmin 的任何引用,恶意用户也可以发布 true Owner.IsAdmin 并且如果您 SaveChanges,您的用户现在是管理员。

是的,这是真的,您的应用程序可能无法以这种方式运行。但是其他细节可能会被黑客入侵,密码可能被更改,或者任何其他可能的恶意方式。

通常,永远不要将数据模型直接传递给视图。使用中间视图模型,并且仅在其间复制授权值,并且在视图模型中仅具有视图所需的字段。

于 2013-03-09T18:36:41.950 回答