首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC3剃刀模型更新模型

问MVC3剃刀模型更新模型
EN

Stack Overflow用户
提问于 2012-05-25 07:28:20
回答 1查看 852关注 0票数 1

我是MVC3的新手,遇到了一个小问题。我已经在互联网上搜索过了,并涵盖了复杂的模型绑定等主题,但都无济于事。如果这是一个简单的问题,我提前道歉。

下面是我的类的样子:

代码语言:javascript
复制
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;}
}

下面是我的编辑控制器的示例:

代码语言:javascript
复制
[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);
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-25 08:46:57

如果看不到您的视图,我就不能确切地说出它不绑定的原因。也就是说,不要将您的域模型(vod)绑定到您的操作。使用包含您需要的点播属性的视图模型。

代码语言:javascript
复制
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的点播(如果该实例不存在,则使用正确的默认值创建一个新实例)。然后根据您的视图模型中的属性修改您的点播,然后保存点播。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10746665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档