可以使用TagBuilder類,使HTML字符串,如果你喜歡它超過的String.Format()或字符串連接。我還使用System.Xml.Linq類來處理非常複雜的HTML。
,我遵循的一般規則是:「如果如果在那裏,寫一個HTML幫手。」我不能爲此聲明提供信用,但我不記得我聽到了什麼。這個規則會導致HTML助手擴展的爆炸,所以我使用命名空間來組織我的擴展。我創建了一個擴展名稱空間,該名稱空間在我添加到web.config的視圖中共享,然後爲每個特定視圖製作特定於視圖的擴展代碼文件和名稱空間。如果您以合理的方式組織您的代碼,並且不會有大量不必要的助手將您的HTML對象混淆在不需要的地方,這將更容易找到您的擴展所在的位置。
下面是一個例子,使用默認的應用程序名稱MvcApplication1。
加進web.config中包括在所有視圖我的共享助手:
<pages>
<namespaces>
<add namespace="MvcApplication1.Helpers.Shared"/>
</namespaces>
</pages>
這是家用/ About.aspx我的視圖特定的助手的簡化和人爲的例子。
namespace MvcApplication1.Helpers.About
{
public static class AboutViewExtensions
{
public static string AboutViewHelper(this HtmlHelper Html)
{
var tb = new TagBuilder("b");
tb.SetInnerText("bold text");
return tb.ToString(TagRenderMode.Normal);
}
}
}
這是使用<%@ Import %>
指令引入我的名稱空間的About.aspx視圖。
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="MvcApplication1.Helpers.About" %>
<asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server">
<h2>About</h2>
<p>
<%= Html.AboutViewHelper() %>
</p>
</asp:Content>
我認爲如果它只涉及文本輸出(如我上面的示例中所示)而沒有任何必要的HTML,那麼你建議的新屬性是好的。當它涉及HTML雖然,那麼也許一個助手類會更好。 – Alex 2009-07-28 16:46:25