如何将其更改为<%Html.ActionLink%>在我的asp.net mvc应用程序中

时间:2012-01-22 21:39:29

标签: asp.net asp.net-mvc asp.net-mvc-3

我是ASP.net的新手mvc可以帮我解决如何将整个代码转换为使用html.Actionlink

<div class="MenuItemContainer">
      <a href="/Home">
            <div class="MenuItemContent">
                <div>
                    <img src="/Content/TopMenu/Icons/Home.png" alt="Home" />
                </div>
                <div>
                    Home
                </div>
            </div>
        </a>
    </div>

由于

3 个答案:

答案 0 :(得分:3)

你可以写一个自定义的html助手:

public static class HtmlExtensions
{
    public static IHtmlString MyActionLink(
        this HtmlHelper htmlHelper, 
        string linkText, 
        string action, 
        string controller, 
        string imageUrl,
        string alt
    )
    {
        var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
        var div = new TagBuilder("div");
        div.AddCssClass("MenuItemContainer");
        var anchor = new TagBuilder("a");
        anchor.Attributes["href"] = urlHelper.Action(action, controller);
        var itemContent = new TagBuilder("div");
        itemContent.AddCssClass("MenuItemContent");
        var img = new TagBuilder("img");
        img.Attributes["src"] = urlHelper.Content(imageUrl);
        img.Attributes["alt"] = alt;
        itemContent.InnerHtml = string.Format(
            "<div>{0}</div><div>{1}</div>", 
            img, 
            htmlHelper.Encode(linkText)
        );
        anchor.InnerHtml = itemContent.ToString();
        div.InnerHtml = anchor.ToString();
        return new HtmlString(div.ToString());
    }
}

然后使用它:

<%= Html.MyActionLink(
     "Hello", 
     "Index", 
     "Home", 
     "~/Content/TopMenu/Icons/Home.png",
     "Home"
) %>

答案 1 :(得分:0)

您需要创建自定义Html Helper,例如Helpers.MenuLink("LinkText", "View", "ImagePath/Image.png")

以下链接说明了如何执行此操作: http://www.asp.net/mvc/tutorials/older-versions/views/creating-custom-html-helpers-cs

答案 2 :(得分:0)

我会为此制作部分或显示模板,以呈现视图模型。您的HtmlHelper扩展方法将创建您的视图模型并调用DisplayFor或RenderPartial。

这样做的好处是可以将模板保持为HTML,这样可以更容易阅读,而不是搞乱标签制作工具。