ASP.NET MVC中ActionLink的图像等效

14 浏览
0 Comments

ASP.NET MVC中ActionLink的图像等效

在ASP.NET MVC中,是否有类似于Html.ActionLink助手的Img标签的等效方法?

我有一个控制器操作,输出一个动态生成的JPEG图像,我希望使用相同的Lambda表达式链接到它,就像使用ActionLink链接HREF一样。

或者,一个只提供路由URL(再次使用Lambda指定)的助手也可以接受。

编辑:我最初指定我正在使用Preview 5,但我看到已经发布了一个Beta版。版本号是不必要的信息,因为我可能很快升级:-)

0
0 Comments

在ASP.NET MVC中,我们可以使用URL.Action方法来创建一个与ActionLink等效的图像链接。使用URL.Action方法可以通过传入操作和控制器来生成相应的URL。下面是一个示例代码:


在上面的代码中,我们通过使用Razor语法的@符号来替换了原来的<%= %>标记。这样可以更简洁地使用URL.Action方法生成URL。

如果要使用Razor语法的@符号,只需将<%= Url.Action("Create") %>替换为.Action("Create")即可。

通过以上方法,我们可以轻松地在ASP.NET MVC应用程序中创建一个与ActionLink等效的图像链接。

0
0 Comments

在ASP.NET MVC中,如果想要生成一个链接的图像等效物,可以使用Html.ActionLink方法。然而,有些情况下需要直接获取该链接的URL,而不是生成一个完整的链接。在这种情况下,可以使用Url.Action方法来获取链接的URL。

然而,问题在于Url.Action方法并没有提供类似于Html.ActionLink中的lambda表达式功能。这意味着,无法直接通过Url.Action来获取链接的URL。只能使用Html.ActionLink来实现这个功能。

解决这个问题的方法之一是使用MvcToolkit中的一个内部方法来解析lambda表达式。这个方法非常方便,但是由于是内部方法,所以无法直接调用。可以通过使用反射来调用这个方法,或者重新编译MvcToolkit并将这个方法设置为公共方法。不过,希望官方能够在未来的版本中添加一个类似的重载方法到Url.Action中,以解决这个问题。

如果想要避免在视图中出现冗余的代码,可以将这个功能封装为一个扩展方法,比如Html.ActionImage()。

下面是一个示例代码,演示了如何实现一个名为Html.ActionImage()的扩展方法来生成链接的图像等效物:

public static class HtmlExtensions
{
    public static MvcHtmlString ActionImage(this HtmlHelper html, string action, string controller, object routeValues, string imagePath, string altText)
    {
        var url = html.Url.Action(action, controller, routeValues);
        var imgTag = string.Format("\"{1}\"", url, altText);
        return MvcHtmlString.Create(imgTag);
    }
}

使用这个扩展方法的示例代码如下:

@Html.ActionImage("ActionName", "ControllerName", new { id = 1 }, "/images/image.jpg", "Alt Text")

这样就可以在视图中直接生成一个链接的图像等效物,而不需要使用Html.ActionLink来生成完整的链接。

0
0 Comments

在ASP.NET MVC中,如果我们想要在视图中创建一个具有图像的链接,类似于ActionLink方法,我们可能会遇到以下问题:如何使用Url.Action方法生成带有图像的链接。

根据这个问题的描述,作者已经开始使用ASP.NET MVC的时候,RC版本已经发布了。然而,对于那些像作者一样稍后发现这个问题的人来说,这可能是有趣的:在RC版本中,我们可以使用Url.Action方法与匿名类型一起使用,这样的结果比上面的建议看起来更好。

在RC版本中,我们可以这样使用Url.Action方法来创建带有图像的链接:

">
   put in whatever you want, also images.

当然,RouteUrl方法还有许多其他的重载方式,可以根据需要使用。

总结起来,当我们想要在ASP.NET MVC中创建一个带有图像的链接时,我们可以使用Url.Action方法与匿名类型一起使用,通过指定路由参数来生成链接的URL。这样的代码看起来更简洁和优雅,也更符合ASP.NET MVC的设计思想。

0