2008-12-09 134 views
2

在不同的控制器之間共享視圖(使用Views/Shared文件夾)是一個好主意嗎?我正在創建我的第一個MVC應用程序,它需要一些相互類似的數據。他們「解釋」不同的事物(因此將存儲在不同的表格中),但他們都有一個ID,名稱和狀態。因此,我可以使用不同的控制器,然後使用相同的視圖在下拉列表中顯示數據,允許用戶選擇一個編輯或通過文本框添加一個新的。顯然,我失去了強類型化ViewPage數據的能力,但除此之外,這會被認爲是一個好辦法,或者我最好爲每個控制器創建一個View來使用它?共享視圖

回答

1

與我們的項目,我們隔離大多數的對控制器的視圖並不重用其中的許多視圖,但我們確實使用了大量的用戶控件和局部視圖這樣我們就不會重複自己。這可以讓我們保留所有強類型的東西,也許它可能適合您的情況?

1

就個人而言,如果視圖的通用性足以用於多個場景,那麼我會這樣使用它。幹!

+0

謝謝DaRKoN_。我在想什麼,這就是爲什麼我開始走這條路,但後來擔心我可能錯過了一些會讓我陷入困境的東西! – dave 2008-12-09 04:41:06

1

如果您創建自己的中間類來處理視圖數據,那麼您仍然可以在此場景中使用強類型的ViewPage。

定義自定義類視圖頁:

public class MyCustomViewData 
{ 
    public int Id {get; set;} 
    public string Name {get; set;} 
    public int Status {get; set;} 
} 

從自己的網頁中:

<% Html.RenderPartial("MyCustomView", new MyCustomViewData() 
{ 
    Id = ViewData.Model.SomeIdField, 
    Name = ViewData.Model.SomeNameField, 
    Status = ViewData.Model.SomeStatusField 
}); 

或從控制器

public ActionResult Foo() 
{ 
    // get your model data 

    return View("MyCustomView", new MyCustomViewData() 
    { 
     Id = model.SomeIdField, 
     Name = model.SomeNameField, 
     Status = model.SomeStatusField 
    }); 
} 
+0

感謝託德,我特別喜歡來自控制器的人,如果我繼續分享觀點,那麼肯定會實現這一點。 – dave 2008-12-10 00:16:54

0

如果你有一個通用的頁面格式,說一個表,那麼你可以在共​​享文件夾中創建一個通用視圖。此ViewData必須包含列信息以及數據,以及有關任何鏈接的一些信息。

細節並不難,如果有很多類似的頁面,它可以節省時間。