2010-11-19 27 views
0

我是新來的ASP.NET MVC 3,並期待從其他工具升級到asp.net mvc 3. 在目前的情況下,我有產品是用戶特定的,每個產品都有主要類別,分類和子類別。當用戶登錄時,用戶只能查看適用於他的產品(使用分頁)。在左側導航菜單上,它顯示PrimaryCategory爲ComboBox,Category和SubCategory爲TreeView(導航部分僅顯示適用於用戶的產品的主要/類別/子目錄)。這個導航菜單在每個頁面上都有顯示(例如在主頁面上),以便用戶可以輕鬆切換到任何Cat/SubCat。Asp.net MVC 3和主頁ViewModel和類別列表

我有關於導航菜單和分頁(產品列表)的以下問題。

  1. 使用MVC 3(Razor視圖引擎),我該如何填補主要類別(組合框),類別/子類別的樹形視圖母版的導航部分?有沒有任何控件可用於這些或我只需要使用HTML + CSS呢?

  2. 這是什麼URL的語法和路線映射。是否需要將PrimaryCat,Cat,SubCat ID和PageNumber作爲映射(即/ products/1/2/3/1到每個URL或只是PageNumber和查詢字符串參數(/ products/1?PCat = 1 & Cat = 2 & SUBCAT = 3)。

  3. 當用戶選擇任何類別/子類別,在內容部分如何可以顯示產品與尋呼數據網格。再次是否有數據網格任何控制?

  4. 我有在MasterPage(ShoppingBasket)上的另一個部分,我在其中顯示用戶添加到購物籃中的項目,所以我想要更新該部分,以及當用戶單擊數據網格中的添加按鈕時不刷新整個頁面。

我已經閱讀了Scott在Asp.net網站上有關使用抽象控制器將數據傳遞給MasterPage的教程,並將使用該教程,除非有人有不同的想法比這更好。

任何迴應將不勝感激。 在此先感謝

問候 Jhelumi

回答

1

你的大多數問題是用戶界面有關,也有不同的方法來解決這些問題。

問題1;是的,你需要自己做渲染。或者您可以將類別轉儲到JavaScript數組中,並使用像jQuery Treeview Plugin這樣的插件在客戶端進行渲染。

問題2;它可以以任何方式工作。所以這取決於你。

問題3和4當然是可能的。但是它們太寬泛了,所以很難給出明確的答案。如果你問一個具體的例子,我可以嘗試提供一些示例代碼。

無論如何,我建議試着忘掉datagrid或任何其他服務器端控件。 ASP.NET MVC的優點之一是您可以完全控制從服務器發送到客戶端的響應。您只需將模型提供給視圖(如果需要的話),並且該視圖負責將信息顯示給用戶。

+0

嗨,謝謝你的回覆。我想使用Jquery進行渲染,但後來我看到鏈接提示可以使用一些HTMLHelper控件。例如 http://weblogs.asp.net/shijuvarghese/archive/2010/10/08/using-the-webgrid-helper-in-asp-net-mvc-3-beta.aspx http:// www。 mikesdotnetting.com/Article/128/Get-The-Drop-On-ASP.NET-MVC-DropDownLists 同時考慮到性能,我不想回到數據庫4每個URL,而是獲得所有適用於用戶的產品,並存儲某處並在那裏查詢4rm以滿足用戶請求。我怎麼能做到這一點?我打算爲此使用EF和Linq。 – Jhelumi 2010-11-19 12:53:52

+0

@Jhelumi,爲了減少到DB的點擊次數,你可以使用內置的Cache對象,這種模式:'GetSomeEntity(){如果在緩存{返回}其他{從數據庫獲取,放入緩存,返回}} '。這將是引入緩存的最快方法。當然,你也可以有一個靜態類來負責持有你經常需要的這些對象。我建議檢查一些其他問題,看看人們使用EF或Linq時人們做什麼緩存。 – 2010-11-19 13:33:33

+0

@Jhelumi此外,我認爲您可以從開發示例應用程序(如果您有時間)或閱讀一些源代碼以瞭解框架中獲益。我試圖提供一些答案,但我想我沒有強調爲什麼ASP.NET MVC是一個功能強大且有趣的框架來開發Web應用程序:) – 2010-11-19 13:37:59