Я использую MVC 5, и я пытаюсь написать некоторые методы расширения Bootstrap. Моя цель - «перезаписать» метод Html.ActionLink
с помощью Html.BootstrapLinkButton
. Метод BootstrapLinkButton
должен сгенерировать ссылку на классы css "btn btn-default"
автоматически. Мой код до сих пор:HtmlAttributes in Extension Method
public static MvcHtmlString BootstrapLinkButton(this HtmlHelper htmlHelper,
string linkText,string actionName, string controllerName,
object routeValues = null, object htmlAttributes = null)
{
var attributes =
HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
if (attributes.ContainsKey("class"))
{
object value;
attributes.TryGetValue("class", out value);
value = (value as string) + " btn btn-default";
attributes["class"] = value;
}
else
{
attributes["class"] = "btn btn-default";
}
return htmlHelper.ActionLink(
linkText, actionName, controllerName, routeValues,
new Dictionary<string, object>(attributes));
}
, который дает мне следующий результат в HTML:
<a comparer="System.Collections.Generic.GenericEqualityComparer`1[System.String]"
count="3"
keys="System.Collections.Generic.Dictionary`2
+KeyCollection[System.String,System.Object]"
values="System.Collections.Generic.Dictionary`2
+ValueCollection[System.String,System.Object]"
href="/test/test/">
Test
</a>
Я искал в Интернете, но ничего, кажется, решить эту проблему. Кто-нибудь знает волшебный код, чтобы исправить это?
nit: вместо вызова 'HtmlHelper.AnonymousObjectToHtmlAttributes (routeValues)', используйте конструктор 'new RouteValueDictionary (routeValues)'. Вспомогательный метод по существу является оберткой этого и существует только во избежание путаницы в отношении именования. – bhamlin
Спасибо за подсказку. Я изменил его в айнсере. – Thijs