2010-11-13 72 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