C#ASP.NET MVC用户控件

时间:2010-08-09 22:16:43

标签: c# asp.net-mvc

  • 我想将用户控件插入母版页
  • 用户控件是列出项目类别的基本菜单
  • 我想从SQL Server动态提取类别列表
  • 我可以使用代码隐藏在Web表单中执行此操作,但您如何在MVC中进行此操作? 谢谢

Categories.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<ul> 
<% foreach (string category in Model.Categories ) { %> 
  <li> 
     <%= Html.Encode(category) %> 
  </li> 
<% } %> 
</ul>

2 个答案:

答案 0 :(得分:0)

这是在您的控制器中:

ViewData["CategoryList"] = _categoryService.GetCategoryList();

这存在于名为NameOfMyPartial.ascx的文件中:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

<% foreach (var category in (IList<Category>)ViewData["CategoryList"])) { %>
    // do stuff with category
<% } %>

然后在您的母版页面中:

<% RenderPartial("NameOfMyPartial"); %>

答案 1 :(得分:0)

我会为将使用MasterPage的所有控制器创建一个基本控制器。在该基本控制器中,我将加载您的数据列表以创建菜单(从缓存,sql,无论如何)并将其存储在ViewData中。

如果您愿意,您也可以为所有模型制作基础模型,这些模型将基于控制器加载视图,然后您可以直接将其加载到扩展此基类的模型中。

假设您使用了更简单的ViewData路线,您可以在用户控件中访问ViewData并加载菜单,因为您可以假设所有控制器都已预先加载此数据。< / p>