2012-11-06 20 views
0

填充我有2個ActionResults與一個DropDownList源包含一個DropDownList單查看多個ActionResults從控制器

Public ActionResult Create() 
{ 
    var model = new ViewModel { 
     Entity = new Entity(), 
     Categories = GetCategories() 
    }; 

    return View("Edit", model); 
} 

Public ActionResult Edit(int id) 
{ 
    var model = new ViewModel { 
     Entity = GetFromDatabase(id), 
     Categories = GetCategories() 
    }; 

    return View(model); 
} 

我覺得我打破了DRY原則返回相同的觀點,即使我」已經將類別的人口轉移到了一種方法。有沒有更好的方法去解決這個問題,只說明從哪裏獲得類別?

回答

0

我認爲你有點過度擔心。這段代碼對我來說看起來很好。這更可讀。只要你沒有很大的性能問題,你不需要擔心這一點。

如果你仍然想避免GetCategories調用2個地方,你可以把它放到你的ViewModel類的構造函數。

public class ViewModel 
{ 
    public ViewModel() 
    { 
    } 
    public ViewModel(bool includeCategories) 
    { 
    this.Categories=SomeService.GetCategories(); 
    } 

    public List<SelectListItem> Categories { set;get;} 
    //other properties 
} 

這取決於你如何處理這個問題。沒有書面規則。 請關注您認爲更易讀,看起來乾淨的。但親自,我會保持我的ViewModel作爲簡單的POCO類沒有任何這個構造函數邏輯加載數據。我會很高興在這兩個操作方法中調用GetCategories。對我來說,這看起來乾淨可讀。

+0

謝謝,我想我只需要讓我放心的保證。我遇到的最大問題是,如果這些類別是稍後添加的,並且我忘記填充它們在所有ViewModels中。這是一個小的細微差別,但令人討厭。 –

相關問題