Можно ли использовать ActionLink, содержащий элемент? - PullRequest
12 голосов
/ 03 ноября 2011

Как говорится в вопросе: возможно ли использовать ActionLink, содержащий элемент, и если нет, как лучше всего его достичь?

Например, допустим, у меня есть элемент SpanЯ хочу, чтобы все это было гиперссылкой ... Следующие работы:

<a href="/Site/Page/@Model.ID?Type=test">
                <span class="box5">Click anywhere in this box</span> </a>

Представьте, что класс span5 / css box5 делает это большим ... Первоначально был DIV, но я обнаружил, чтоне соответствует стандартам, и это, похоже, соответствует норме.

Это отрисовывается и работает нормально, но есть ли способ использовать ActionLink вместо этого?Я попытался угадать синтаксис, такой как (копирование из форм):

@using (Html.Actionlink){<span class="box5">Click anywhere in this box</span>}

и многих других комбинаций без какой-либо удачи.

Теперь мой ручной обходной путь HTML работает нормально, и я счастливчтобы оставить его, но можно ли использовать MVC ActionLink, и если это так, стоит ли мне даже волноваться / будут ли какие-то преимущества?

Ответы [ 5 ]

29 голосов
/ 03 ноября 2011

Просто используйте @Url.Action вместо:

<a href="@Url.Action("Page","Site", new { id = Model.Id, @Type = "test" })">
 <span class="box5">Click anywhere in this box</span> </a>
5 голосов
/ 03 ноября 2011

Есть хак, который вы можете использовать, чтобы обойти ограничение

@Html.Raw(
     Html
        .ActionLink("-replace-me-", .....)
        .ToString()
        .Replace(
              "-replace-me-", 
              @"<span class=""box5"">Click anywhere in this box</span>"))

это не элегантно, но делает работу

1 голос
/ 03 ноября 2011

Вы не можете указать html-тег внутри actionlink, но я могу предложить вам два решения: 1 расширьте actionlink вашей функцией.Таким образом, вы также можете реализовать actionlink, который генерирует href с другим тегом htmal внутри (img или span, как в вашем случае)

2, используя url.content в href.Это похоже на ваш реальный обходной путь, но лучше, потому что вы используете правила, которые вы определили в global.asax, вместо того, чтобы использовать «волшебную строку»

1 голос
/ 03 ноября 2011

Html.ActionLink - это просто старый метод расширения до HtmlHelper объекта.

Вы также можете создать свои собственные собственные методы расширения для HtmlHelper, и они довольно просты в использовании и сэкономят вам массу времени.

0 голосов
/ 03 ноября 2011

Просто напишите <span> </span> и между интервалами используйте метод @html> ActionLink. Это будет работать

...