從數據庫中獲取現有類別(最好通過存儲庫,但爲了簡潔起見,我只顯示Linq to Entities查詢):
var db = new YourObjectContextImplementation();
var categories = db.Categories.AsEnumerable();
通過視圖模型將這些轉發到您的視圖。在你看來,你以某種方式輸出表單以使用戶能夠添加分類。您不會爲類別標識給他們一個文本框(或選擇列表),而是向他們提供一個選擇列表,其中值爲是標識,但文本/內部html是類別名稱。這樣,用戶只能看到名字,但是你的動作獲得一個傳遞給它的整數參數。
更新的迴應發表評論:
我假設您正在傳遞一個新的Classified
對象視圖模型,然後使用EditorFor
助手?一切都很好,但你應該換行Classified
對象在特定視圖模型,例如ClassifiedAddModel
如下:
public class ClassifiedAddModel
{
public Classified NewClassified { get; set; }
public IEnumerable<Category> ExistingCategories { get; set; }
}
然後你就可以實例化和填充在控制器動作ClassifiedAddModel
對象,一起將它作爲模型視圖,並建立使用語法格式如
<%: Html.EditorFor(Model.NewClassified.Description) %>
<%: Html.EditorFor(Model.Categories "CategoriesEditor") %>
其中"CategoriesEditor"
是需要分類和呈現一個選擇列表與他們的自定義視圖模型的名稱。但是,上述示例的要點是要顯示如何訪問Classified
對象和所有現有類別的兩個屬性。
是的,我在MS Access中做了類似的事情,所以我認爲這是要走的路。我只是不知道如何實現它。 非常感謝,我會給它一個去。 – SimonGates 2010-07-20 08:43:09
我不能在selectList中做「Model.Catergories」,因爲我的模型是空的,因爲我正在添加數據,我試過了,我得到一個空引用異常。任何關於如何將catergories傳遞給視圖的想法我已經嘗試過ViewData。 – SimonGates 2010-07-20 09:19:28
是的,這取決於你如何構建你的模型。您應該能夠使用ViewData詞典,因此在您的控制器中: ViewData [「Categories」] = categories; //可分類物品列表 然後在您的視圖中: <%= Html.DropDownList(「classified.Category.Id」,new SelectList((IEnumerable)ViewData [「Categories」],「Id」,「Name 「)%> – JonoW 2010-07-20 10:14:45