以同样的方式,我可以在ASP.NET MVC中创建指向控制器中的操作的ActionLink (例如- @Html.ActionLink("MyDisplayText", "MyAction", "MyController")
),我希望能够创建一个具有显式定义的外部url的超链接。
我正在寻找一些像@Html.HyperLink("stackoverflow", "http://www.stackoverflow.com/")
这样的代码,它可以生成这样的HTML语言:<a href="http://www.stackoverflow.com/">stackoverflow</a>
如果这是不可能的,我可以随时手动编写HTML。
(这是我的第一个堆栈溢出问题。多么令人兴奋。)
发布于 2012-01-20 04:43:36
自定义帮助器可能如下所示:
namespace System.Web.Mvc {
public static class HtmlHelperExtensions {
public static MvcHtmlString Hyperlink(this HtmlHelper helper, string url, string linkText) {
return MvcHtmlString.Create(String.Format("<a href='{0}'>{1}</a>", url, linkText));
}
}
}
希望这是您使用的众多自定义HtmlHelpers中的第一个!
发布于 2014-09-11 23:44:11
老问题:但答案很简单--不确定这是否一直都是一个解决方案。
@Html.RouteLink("External Link", new {}, new { href="http://www.google.com" })
这个技巧做得很好--尽管可能有点夸张。
发布于 2012-01-20 04:38:53
public static class HtmlHelpers
{
public static string Hyperlink(this HtmlHelper helper, string href, string text)
{
String.Format("<a href=\"{0}\">{1}</a>", href, text);
}
}
都会起作用的。在HtmlHelper中使用它表示一个扩展方法。另外,如果你想成为超级酷的MVC风格,你可以使用TagBuilder,甚至提供一些选项,比如target:
public static MvcHtmlString Script(this HtmlHelper helper, string href, string text, bool openInNewWindow = false)
{
var builder = new TagBuilder("a");
builder.MergeAttribute("href", href);
if(openInNewWindow)
{
builder.MergeAttributes("target", "_blank");
}
builder.SetInnerText(text);
return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
}
https://stackoverflow.com/questions/8932818
复制相似问题