在ASP.NET MVC 3中使用帮助程序生成链接的最佳选择是什么?
据我所知,最好使用Url.RouteUrl
和Html.RouteLink
助手而不是Url.Action
和Html.ActionLink
来生成链接,因为前两个允许您使用{{ 1}}代替RouteName
和Controller
进行网址格式匹配。
答案 0 :(得分:1)
best 在这种情况下意味着什么?
是不是意味着:
因为有很多方法可以创建链接,并且每个方法都有不同的用途,所以我会在不同的时间使用它们,但我通常只是将链接包装在HtmlHelper
方法中并创建一个强名称为它:
public static MvcHtmlString GenerateProductUrl(this Urlhelper helper, Product product)
{
return MvcHtmlString.Create(
helper.RouteUrl(
"widgetlink",
new {
productID = product.ProductId,
productName = product.ProductName.ToUrlSlug()
}
)
);
}
然后你打电话给如下:
<a href="<%= Url.GenerateProductUrl(Model.Product) %>" class="xurl"><%= Html.Encode(Model.Product.Name) %></a>
如果您希望为您生成一个完整的链接(可能是因为您没有针对单个链接的专门CSS类),那么您可以使用它:
public static MvcHtmlString GenerateProductLink(this Htmlhelper helper, Product product)
{
return MvcHtmlString.Create(
helper.RouteLink(
"widgetlink",
new {
productID = product.ProductId,
productName = product.ProductName.ToUrlSlug()
}
)
);
}
使用HtmlHelpers和UrlHelpers可以获得以下优势:
Html.
并显示所有链接,特别是如果您将Generate
作为生成链接和网址的前缀UrlHelpers
我在我写的一篇博客文章中详细讨论了这篇文章,其中我列出了一些tips for writing URLs in ASP.NET MVC。
答案 1 :(得分:0)
您尝试使用@ html.ActionLink();?