2010-11-19 46 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