我不认为这有太多的错误,很明显,看看它能做什么,它能起作用。不过,最好是让它更易于重用,因为我可以想象您可以用其他链接重复一下自己。可能是这样的:
public static string RenderLink(this HtmlHelper html, string text, string url, object htmlAttr) {
if (!HttpContext.Current.Request.Url.AbsolutePath.StartsWith(url, StringComparison.InvariantCultureIgnoreCase)) {
return text; //comparison excludes the domain
}
TagBuilder tag = new TagBuilder("a");
tag.SetInnerText(text);
tag.Attributes.Add("href", url);
//... add attributes parsed as htmlAttr here
return tag.ToString();
}
然后将链接添加到视图,如下所示:
<%= Html.RenderLink("Register", "/register/", new { @class="register"}) %>
<%= Html.RenderLink("Account", "/account/", new { @class="account"}) %>
如果您想离开硬编码域,请使用
请求.url.absolutePath
而不是
阿贝特鲁里
如上所述。
另一种选择是从控制器解析模型中的当前页面信息,可能类似于
viewdata.model.currentpage=“注册”;
但我不建议你这么做,因为我不认为这是控制者的工作。