Я хотел бы создать некоторые вспомогательные функции HTML для создания некоторых ссылок с созданным HTML-контентом. Я бы использовал API по умолчанию как можно больше. Это становится сложным, когда я хочу передать объект routevalues. Объект routevalue типа RouteValueDictionary
(намеренно?) Громоздко создается в MVC. Я хотел бы передать в object routevalues
, как это делается с i.e Html.ActionLink
. Сложная часть состоит в том, что мне, кажется, нужен UrlHelper.CreateUrl
, который требует RouteValueDictionary
. Я проверил, как ActionLink
делает это внутри, и использует TypeHelper.ObjectToDictionary
. TypeHelper
однако является внутренним классом, поэтому я не могу получить к нему доступ. Я мог бы скопировать-вставить вещь, но, кроме того, во-первых, я буду нарушать лицензию, если я это сделаю и не буду лицензировать под лицензией Apache 2.0 или совместимой, а во-вторых, программа копирования-вставки дает мне heeby- jeebies.Создание ссылки с содержимым html
Ниже то, что я грубо хотел бы сделать:
public static MvcHtmlString MyFancyActionLink(this HtmlHelper helper,
Foo foo,
object routevalues){
TagBuilder inner = fancyFooContent(foo);
RouteValueDictionary routedict = TypeHelper.ObjectToDictionary(routevalues);
//alas! TypeHelper is internal!
string url = UrlHelper.GenerateUrl(null,
"myaction",
"mycontroller",
routedict,
helper.ViewContext.RequestContext,
true);
TagBuilder link = new TagBuilder("a");
link.MergeAttribute("href", url);
link.InnerHtml = inner.toString();
return MvcHtmlString.Create(link.ToString());
}
Можете ли вы обновить свою версию? https://aspnetwebstack.codeplex.com/workitem/1737 – RobH