我试图找出如何在asp.net mvc中使用usercontrols.我知道如何添加一个用户控件到一个视图和如何传递数据到它.我不能弄清楚的是,如何在每个控制器中检索和传递数据?
例如,如果我有一个用户控件显示站点中的几个但不是所有页面上的最新帖子,那么如何编写控制器,以便我获取该用户控件的数据,并将其从只有一个将其传递给用户控件放置在网站上,而不是在使用用户控件的每个不同控制器中获取和传递数据?
我不知道这是否有意义.是否有更好的或推荐的方式来处理您要在几页上显示的“岛”数据?
解决方法
有多种方法可以做到这一点.
基本的做法是
>在BaseController中填充视图的数据(OnActionExecuting事件)
>编写自定义动作过滤器
>编写应用程序控制器(例如,在下面的链接中).
OnActionExecuting的一个例子是
[HandleError] public class BaseController : Controller { CourseService cs = new CourseService(); protected override void OnActionExecuting(ActionExecutingContext filterContext) { List<Tag> tags = cs.GetTags(); ViewData["Tags"] = tags; } }
您可以在任何视图中使用“标签”视图数据.这只是用户控件呈现为侧面内容的示例.
<div id="sidebar_b"> <asp:ContentPlaceHolder ID="ContentReferenceB" runat="server" > <% Html.RenderPartial("Tags"); %> </asp:ContentPlaceHolder> </div>
我发现以下URL是有用的.
http://blog.matthidinger.com/2008/02/21/ASPNETMVCUserControlsStartToFinish.aspx
http://www.aaronlerch.com/blog/2008/01/26/displaying-foo-on-every-page-of-an-aspnet-mvc-application/
http://blog.wekeroad.com/2008/01/07/aspnet-mvc-using-usercontrols-usefully/