У меня есть два вопроса:
Html.ActionLink()
в представлении MVC (на самом деле, это Site.Master
). Нет перегруженной версии, которая не позволяет текст ссылки, и когда я пытаюсь передать в просто пробеле string
, компилятор говорит мне, что ему нужна непустая строка.
Как я могу зафиксировать это?
Я должен поместить <span>
теги в теге привязки, но это не работает с Html.ActionLink();
. Я хотел бы видеть следующий вывод:
Текст промежутка
Как я могу вставить теги тега привязки в ASP.NET MVC?
Вместо использования Html.ActionLink вы можете вывести url через Url. Action
<a href="<%= Url.Action("Index", "Home") %>"><span>Text</span></a>
<a href="@Url.Action("Index", "Home")"><span>Text</span></a>
И для того, чтобы сделать пустую URL, вы можете использовать
<a href="<%= Url.Action("Index", "Home") %>"></a>
<a href="@Url.Action("Index", "Home")"></a>
Другой опцией является пользовательское расширение HtmlHelper. Note: ParameterDictionary - мой собственный тип. Вы можете заменить словарь RouteValueDictionary, но вам придется построить его по-другому.
public static string ActionLinkSpan( this HtmlHelper helper, string linkText, string actionName, string controllerName, object htmlAttributes )
{
TagBuilder spanBuilder = new TagBuilder( "span" );
spanBuilder.InnerHtml = linkText;
return BuildNestedAnchor( spanBuilder.ToString(), string.Format( "/{0}/{1}", controllerName, actionName ), htmlAttributes );
}
private static string BuildNestedAnchor( string innerHtml, string url, object htmlAttributes )
{
TagBuilder anchorBuilder = new TagBuilder( "a" );
anchorBuilder.Attributes.Add( "href", url );
anchorBuilder.MergeAttributes( new ParameterDictionary( htmlAttributes ) );
anchorBuilder.InnerHtml = innerHtml;
return anchorBuilder.ToString();
}
Просто используйте Url.Action
вместо Html.ActionLink
:
<li id="home_nav"><a href="<%= Url.Action("ActionName") %>"><span>Span text</span></a></li>