2011-02-22 98 views
5

我是mvc的新手,所以不確定這是否可能。爲mvc創建一個html助手

我有一些HTML,基本上使用一些圖像來創建一個漂亮的外觀圓角框。

是否有可能在mvc3中創建一個幫助函數,該函數可以讓我調用幫助程序,並將我想要的任何內容插入div標籤的主區域。

這是我的HTML

<div class="rounded"> 
    <div class="top"> 
     <div class="right"> 
     </div> 
    </div> 
    <div class="middle"> 
     <div class="right"> 
      <div class="content"> 
      Some how allow me to insert data into here 
       <div class="Clear"> 
      </div> 
     </div> 
    </div> 
    <div class="bottom"> 
     <div class="right"> 
     </div> 
    </div> 
</div> 


</div> 

我不希望有任何地方我想用這個造型,所以我希望我可以創造一些類型的幫手,並調用它,每當我需要用這個複製此框,並允許我插入html到

<div class="content"> 
      Some how allow me to insert data into here 
       <div class="Clear"> 
      </div> 

有沒有人有任何建議?

謝謝

回答

6

似乎是一個自定義的HTML幫助一個優秀的場景:

public class RoundedCorner : IDisposable 
{ 
    private readonly ViewContext _viewContext; 
    private bool _disposed = false; 

    public RoundedCorner(ViewContext viewContext) 
    { 
     _viewContext = viewContext; 
    } 

    public void Dispose() 
    { 
     Dispose(true); 
     GC.SuppressFinalize(this); 
    } 

    protected virtual void Dispose(bool disposing) 
    { 
     if (!_disposed) 
     { 
      _disposed = true; 
      _viewContext.Writer.Write(
       @"<div class=""Clear""> 
        </div> 
        </div> 
        </div> 
        <div class=""bottom""> 
        <div class=""right""> 
        </div> 
        </div> 
        </div> 
        </div>" 
      ); 
     } 
    } 
} 

public static class HtmlExtensions 
{ 
    public static RoundedCorner RoundedCorner(this HtmlHelper htmlHelper) 
    { 
     htmlHelper.ViewContext.Writer.Write(
      @"<div class=""rounded""> 
      <div class=""top""> 
      <div class=""right""> 
      </div> 
      </div> 
      <div class=""middle""> 
      <div class=""right""> 
      <div class=""content"">" 
     ); 
     return new RoundedCorner(htmlHelper.ViewContext); 
    } 
} 

,並在你看來簡單:

@using (Html.RoundedCorner()) 
{ 
    <div>Some how allow me to insert data into here</div> 
} 

這將產生(我知道,什麼樣的醜陋的格式,但完全有效的HTML,我現在懶得修復它):

<div class="rounded"> 
       <div class="top"> 
       <div class="right"> 
       </div> 
       </div> 
       <div class="middle"> 
       <div class="right"> 
       <div class="content"> <div>Some how allow me to insert data into here</div> 

<div class="Clear"> 
        </div> 
        </div> 
        </div> 
        <div class="bottom"> 
        <div class="right"> 
        </div> 
        </div> 
        </div> 
        </div> 
+0

感謝Darin,我喜歡mvc,我玩得越多:) – 2011-02-22 23:02:56

+0

對不起還有一個問題我在哪裏安排這門課?以及如何引用它,我只需要將我的名稱空間添加到視圖web.config中? – 2011-02-22 23:10:00

+0

doh!忽略這一點,我添加到助手文件夾中,並添加到web.config中的命名空間的引用 – 2011-02-22 23:14:03

2

我喜歡Darin提供的上述解決方案。我所做的唯一更改是在RoundedCorner類中有兩個私有方法,它們將開放標記和結束標記寫入視圖上下文,而不是將其中的一部分放在該類中,而將另一部分放在助手中。然後幫助器只返回一個新的RoundedCorner實例。