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