Asp.net
您如何在 asp.net mvc 中使用顯示數據“孤島”的使用者控制項?
我試圖找出如何在 asp.net mvc 中使用使用者控制項。我知道如何將使用者控制項添加到視圖以及如何將數據傳遞給它。我無法弄清楚的是,您如何在不必檢索和傳遞每個控制器中的數據的情況下做到這一點?
例如,如果我有一個使用者控制項,它在站點中的幾個但不是所有頁面上顯示最近的文章,我如何編寫控制器以便我獲取該使用者控制項的數據並將其僅從一個傳遞給使用者控制項放置在網站中,而不是在使用使用者控制項的每個不同控制器中獲取和傳遞數據?
我不確定這是否有意義。是否有更好或推薦的方法來處理要在多個頁面上顯示的數據“孤島”?
我來自網路表單,我可以編寫一個使用者控制項,該控制項獲取自己的數據並獨立於使用它的任何頁面的其餘部分顯示數據。
有多種方法可以做到這一點。
基本方法是
- 為 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/