2010-01-21 35 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