2010-01-21 33 views
0

我們的設計師想出了按鈕樣式需要加入的<跨度>標籤<一個>標籤我們的鏈接,裏面的應用程序。如何更改ASP.NET MVC中的鏈接呈現?

在ASP.NET中,我們通過爲鏈接按鈕添加App_Browsers條目來實現此目的。

我將如何去在ASP.NET MVC中做這件事?

我曾考慮創建我自己所有的各種HTML幫助功能的版本創建ActionLinks和RouteLinks但是這似乎是一個相當「蠻力」的做事方式。

有沒有一個很好的優雅的方式呢?

我知道我們可以寫一些簡單的jQuery做到這一點,但我們寧願走出服務器的正確擺在首位的標記。

回答

1

其實我覺得寫一個新的幫手就是我要去的方式。在我看來,這正是他們在那裏的原因,它也使得它們可以重複使用。

+0

嗨Griegs。我對此的擔心是有很多不同版本的方法,我會寫很多變體。隨着新的verisons增加,我必須跟上步伐。任何想法,如果有一個好的地方'後處理'的HTML發送之前?謝謝。 – 2010-01-21 00:33:59

+0

一旦設計師涉足耶,這聽起來就像一個典型的問題。至於做這個的好地方?這並不令人想到。我會看看所有的變化,看看是否有幫助我可以寫,這會給我一個基地。然後寫另一位可能充實基地的助手給我其他人。這些事情總是很痛苦。 – griegs 2010-01-21 00:45:00

+0

你可以在你的錨點上建立一個基礎跨度,把它建立起來,然後寫一個幫助把跨度作爲參數。 – griegs 2010-01-21 00:45:35

1

你總是可以寫一個一個擴展方法,它將另一個(內置的一個)作爲參數,並在調用它之前圍繞鏈接文本包裝<span>。這應該是很容易做到的lambda表達式...

public static string SpanLink(this HtmlHelper helper, 
    string linkText, object args, Action<string> action) 
    where TController : IController 
{ 
    action("<span>" + linkText + "</span>", args); 
} 

,並呼籲它:

<%= Html.SpanLink<HomeController>("link text", (s) => Html.ActionLink<HomeController>(c => c.Index(s)); 

(此代碼直接鍵入的SO回答域 - 我還沒有檢查它,以確保它編譯,所以忍耐一下,如果它不會在第一次嘗試工作...)

+0

看起來有趣!我會試一試,謝謝。 – 2010-01-21 10:20:45