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

如何将此更改为<;%Html.ActionLink%>;在我的asp.net mvc应用程序中,asp.net,asp.net-mvc,asp.net-mvc-3,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我是ASP.NETMVC新手,任何人都可以帮助我如何将整个代码转换为使用html.Actionlink吗 <div class="MenuItemContainer"> <a href="/Home"> <div class="MenuItemContent"> <div> <img src="/Content/TopMenu/Icon

我是ASP.NETMVC新手,任何人都可以帮助我如何将整个代码转换为使用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>


谢谢

您需要创建自定义Html帮助程序,例如
Helpers.MenuLink(“LinkText”、“View”、“ImagePath/Image.png”)

以下是一个链接,说明如何执行此操作:

您可以编写自定义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());
    }
}
public静态类
{
公共静态IHtmlString MyActionLink(
这个HtmlHelper HtmlHelper,
字符串链接文本,
弦作用,
字符串控制器,
字符串imageUrl,
字符串替换
)
{
var urlHelper=新的urlHelper(htmlHelper.ViewContext.RequestContext);
var div=新标记生成器(“div”);
div.AddCssClass(“MenuItemContainer”);
var anchor=新标记生成器(“a”);
anchor.Attributes[“href”]=urlHelper.Action(Action,controller);
var itemContent=新标记生成器(“div”);
AddCssClass(“MenuItemContent”);
var img=新标记生成器(“img”);
img.Attributes[“src”]=urlHelper.Content(imageUrl);
img.Attributes[“alt”]=alt;
itemContent.InnerHtml=string.Format(
"{0}{1}", 
img,
htmlHelper.Encode(链接文本)
);
anchor.InnerHtml=itemContent.ToString();
div.InnerHtml=anchor.ToString();
返回新的HtmlString(div.ToString());
}
}
然后使用它:

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

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


这样做的好处是将模板保持为HTML格式,这使它更易于阅读,而不是与标记构建器混在一起。

+1-爱,爱,爱MVC的可扩展性。很好的例子。