I've used
Url.Action("actionFoo", "controllerBar")
in my Views (aspx). But now I'm refactoring some of my markup to an HtmlHelper I've created.
Problem is I don't seem to have the proper namespaces included or the View has some default object reference that I'm not开发者_如何学Go aware of. Point is the compiler can't find Url.Action.
For simplicity sake here is what I'm trying to do...
public static MvcHtmlString RenderActionButtons(this HtmlHelper helper, string actionName, string controllerName)
{
TagBuilder customActionButtonTagBuilder = new TagBuilder("a");
customActionButtonTagBuilder.Attributes.Add(new KeyValuePair<string, string>("href", Url.Action(actionName, controllerName)));
customActionButtonTagBuilder.InnerHtml = "foo";
customActionButtonTagBuilder.AddCssClass("custom-action-button");
return MvcHtmlString.Create(customActionButtonTagBuilder.ToString(TagRenderMode.Normal));
}
How do I point my code to the proper usage of Url.Action?
soltion... Url is part of a UrlHelper. You can obtain an instance of the UrlHelper if you have the HtmlHelper as follows...
new UrlHelper(helper.ViewContext.RequestContext)
this is the object that exposes url.Action
精彩评论