2012-05-24 149 views
1

我是新来的MVC3,并遇到了一个小问题。我搜索了互联网,并且涉及复杂的模型绑定等主题,但无济于事。如果这是一个简单的问题, 我提前道歉。MVC3剃须刀型号 - 修正模型

这里是我的课是这样的:

public class Vod 
{ 
    public virtual int id {get; set;} 
    public virtual string myname {get; set;} 
    public virtual Metadata Metadata {get; set;} 
} 

public class Metadata 
{ 
    public System.Datetime? dtmCreationDate {get; set;} 
    public string strCreatedBy {get; set;} 
    public string strModifiedBy {get; set;} 
    public System.Datetime? dtmModifiedDate {get; set;} 
} 

这是我的编辑控制器的样品:

[HttpPost] 
public ActionResult Edit(Vod vod) 
{ 
    if (ModelState.IsValid) 
    { 
     db.Entry(vod).State = EntityState.Modified; 
     vod.Metadata.strModifiedBy = "modified"; 
     vod.Metadata.dtmLastModified = DateTime.Now; 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    return View(vod); 
} 

我的问题是试图找出如何在我的控制器设置这些默认值当我创建或编辑记录并将值保存在我的数据库中时。现在上面的代码不工作,因为我没有做正确(未将对象引用设置到对象的实例。)

回答

1

我不能告诉到底为什么它不没有看到你的观点结合。也就是说,不要将您的域模型(vod)绑定到您的操作。使用包含您需要的vod属性的视图模型。

public class VodViewModel 
{ 
    public int id { get; set; } 
    public string myname { get; set; } 
    //any properties of Metadata you need. 
} 

public ActionResult Edit(VodViewModel model) 

现在,您可以获取与数据库中的相应的ID的VOD(并创建正确的默认值的新实例,如果不存在的话)。然后根据视图模型中的属性修改您的vod,然后保存vod。

+0

我发现我一直在寻找在这里。 [链接](http://weblogs.asp.net/manavi/archive/2011/03/28/associations-in-ef-4-1-code-first-part-2-complex-types.aspx) – eproms