2010-01-23 24 views
2

有在ASP.NET MVC(2)的方式做這樣的事情:聯模板,將HTML作爲字符串Model屬性

<table> 
    <tr> 
     <% Model.Pager.TemplateNextPage = { %> 
      <li><a href={link-next-page}>Next</a></li> 
     <% } %> 
     <% Model.Pager.TemplatePageNumber = { %> 
      <li><a href={link-page-number}>{number}</a></li> 
     <% } %> 
     <% Model.Pager.TemplatePageNumberActive = { %> 
      <li>{number}</li> 
     <% } %> 
    </tr> 
</table> 

的總體思路是,以使設計人員指定的模板。

+0

爲什麼設計師不能將HTML改爲任何他們喜歡的東西?

  • Next
  • or

    Next

    or ... – bzlm 2010-01-23 16:43:13

    +0

    目標是一種指定如下模板的方法: PageNumber = {number}。 我會修改問題以使其更清楚。 – Robert 2010-01-23 16:45:58

    +0

    我仍然不知道你在問什麼。你想要ViewData或Model來觸發視圖中顯示的內容,還是隻想要不同的視圖? – Martin 2010-01-23 18:52:14

    回答

    1

    不是那樣的。例如「%>」和「<%」之間的代碼

    <% Model.Pager.TemplateNextPage = { %> 
        <li><a href={link-next-page}>Next</a></li> 
    <% } %> 
    

    ...將轉換爲...

    當編譯
    Model.Pager.TemplateNextPage = {; 
    Response.Write("<li><a href={link-next-page}>Next</a></li>"); 
    }; 
    

    (忽略本例中的空格)。所以它並不真正起作用。

    但是,您可以做的是使用Asp.Net WebForms控件並創建一個自定義控件。它將在Asp.Net MVC頁面中工作。並非所有功能都能正常工作(例如與表單回發有關),但足以滿足您的需求。

    E.g.表控制是這樣的:

    <asp:Table runat="server"> 
        <asp:TableFooterRow> 
         <asp:TableCell>foo</asp:TableCell> 
         <asp:TableCell>faa</asp:TableCell> 
        </asp:TableFooterRow> 
    </asp:Table> 
    

    你可以擴展是 - 或者從頭開始創建控件允許你創建自己的TemplateNextPage等

    ...但這不是Asp.Net MVC方式 - 這是舊的Asp.Net WebForms方式。它只是在Asp.Net MVC頁面內工作。

    你擁有的另一個選擇是創建你自己的模板引擎,但這是相當多的工作,我認爲intellisense部分對你來說非常重要,所以它也會使用它。