0

作为新的MVC,我试图用以下结构编辑预先存在的应用程序:Asp.net视图模型和控制器MVC继承

public ActionResult Create() 
    { 
     return Edit(new Book()); 
    } 

编辑方法使用EditView中视图模型。我需要引用一个id,因此我向ViewModel添加了一个id,这对于编辑书籍非常有用,但在创建书籍时引发异常,因为当时没有id存在。

我所做的是:属性从EditView中成CreateView的视图模型复制,只是有我EditView中延伸CreateView的为:

public class EditView : CreateView 
{ 
    public Guid Id { get; set; } 
} 

我然后用替换上述参照编辑方法

return Create(new Book()); 

和代码create方法按编辑方法,但没有参考ID属性,它的作品,但看起来很难看,由于大量的重复代码 - 我现在有长的编辑和创建在我的控制方法,其是几乎相同的酒吧ID公关operty:

私人的ActionResult编辑(书书) { ....

 return View("Edit", new EditView 
     { 
      Id = book.Id, 
      (rest of the object initializer code identical to the Create method) 

这似乎并不喜欢去的方式 - 我可以或许通过举例的方式得到一些方向这个好吗?

回答

0

我该如何解决这个问题,是使用共享的创建/编辑字段进行局部视图。我在创建和编辑视图中嵌入了这部分内容。编辑视图有一个额外的ID字段。在你的控制器中,你可以做同样的事情;将共享代码分解为新方法,并从创建和编辑操作中调用此方法。示例here