我使用mvc4在实体框架上有一个C#程序。
我想知道是否有可能(我确信这是可能的)让C#自动将帖子绑定到具有关系的对象。
Ex:我有一个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)
{
....
}
}
发布和动态绑定如何与具有关系的类一起使用?
答案 0 :(得分:1)
是的,这是可能的。但是你永远不应该(好吧,几乎从不)直接发布到EF模型。原因很多,但安全性很高,但可维护性和(例如关注点分离)也非常高。
这怎么可能是安全问题?假设您的用户属性有一个字段“IsAdmin”,即使您在视图中没有任何IsAdmin参考,恶意用户也可以发布一个真实的Owner.IsAdmin,如果您保存SaveChanges,您的用户现在是管理员。 / p>
是的,确实如此,您的应用可能无法正常运行。但其他细节可能被黑客入侵,密码可能被更改,或者其他任何可能的恶意方式。
通常,不要将数据模型直接传递给视图。使用中间视图模型,仅复制授权值,并且只在视图模型中具有视图所需的字段。