2010-11-13 107 views
0

我希望我的用戶能夠爲他們選擇的特定模板編輯自己的HTML/CSS。ASP.NET MVC中的UI模板

這種技術被Tumblr &使用Posterous,我試圖研究幾種實現它的方法。

概括地說,我想通過定義佈局:

<div id="main"> 
    <div id="header"></div> 
    {Nav} 
     <div id="middle"> 
      {Featured Article} 
     </div> 
</div> 
然後

ASP.NET MVC會呈現爲標記{}導航說:

<ul> 
<li>Home</li> 
</li>About Us</li> 
</ul> 

我們存儲的用戶在數據庫中指定內容,因此我可以採取的一種方法是將「整個頁面」存儲在數據庫中,並在呈現之前解析出{tag}塊。

MVC中已經構建了一些可以實現這一點的東西嗎?如果我不需要,我不想重新發明輪子。

回答

0

您正在尋找ASP.NET master pages

你會在鏈接頁面創建一個MyMaster.master文件一樣,在適當的。安迪以下內容佔位符:

<asp:contentplaceholder id="Nav" runat="server" /> 
<asp:contentplaceholder id="FeaturedArticle" runat="server" /> 

將在~/Views/Shared,或者可能在一個特定的觀點,如果你想要的文件夾。在你.aspx視圖頁面,你會引用母版頁,像

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/MyMaster.master" %> 

然後這些意見裏面你會

<asp:Content ContentPlaceHolderID="Nav" runat="server"> 
    <ul> 
     <li>Home</li> 
     <li>About Us</li> 
    </ul> 
</asp:Content> 
<asp:Content ContentPlaceHolderID="FeaturedArticle" runat="server"> 
    <!-- Other stuff here --> 
</asp:Content> 
0

正如Domenic說 - 母版頁可以用來聲明一個主要佈局您可以在特定區域存儲/加載用戶特定內容。

我不清楚 - 從你的描述 - 你說用戶可以填寫他選擇的模板的HTML/CSS。所以我假設你可能想要生成一些用戶可以選擇的佈局模板,然後用戶可以爲每個模板提供內容。

如果您有一組固定的總體佈局,那麼您可以將它們生成爲母版頁並在Controller視圖中動態設置它們。控制器中的大多數視圖都會返回一個ViewResult,它允許您指定一個MasterPage - 這意味着您可以創建一個View,其MasterPage可以根據用戶的偏好動態更改。

以下是ActionResult返回類型的ViewResult定義:http://msdn.microsoft.com/en-us/library/system.web.mvc.viewresult.aspx