Подтвердить что ты не робот

Создайте ActionLink T4MVC с фрагментом url

Есть ли способ создать строго типизированный T4MVC ActionLink с хешем/фунтом/фрагментом в нем?

Например, вот ссылка, которую я бы хотел создать:

<a href="/Home/Index#food">Feed me</a>

Но нет расширения для объекта T4MVC, который может это сделать.

<%= Html.ActionLink("Feed me", T4MVC.Home.Index()) %>

Итак, что мне нужно сделать, это создать действие, а затем вставить его таким образом:

<a href="<%= Url.Action(T4MVC.Home.Index()) %>"#food>Feed me</a>

Это не очень желательно. У кого-нибудь есть идеи/предложения?

Заранее спасибо

4b9b3361

Ответ 1

Такой подход является единственным, о котором я могу думать, что чувствует (для меня) немного лучше, чем писать якорь вручную:

${Html.ActionLink("Feed me", T4MVC.Home.Index(), Fragment: "food")}

Помимо искрового зрения - он стоит 1 старый добрый метод расширения htmlhelper и именованные параметры.


Я предполагаю, что это недоступно в режиме просмотра по умолчанию? Я решил написать быстрое расширение для ActionLink, но это не изящно, и мне хотелось бы, чтобы любое решение было доступно другим в будущих версиях T4MVC.

Spark заменяет <% =% > на ${}. Упоминается только потому, что я предпочитаю это (вы должны попробовать, если будете подчеркивать элегантность кода). С# 4.0 требуется для использования именованных параметров.

Это потому, что я хотел бы избежать потери информации, к которой карты аргументов параметра "еда".


И да, я очень согласен с Маттиасом Якобсоном.

Ответ 3

Обновление: эта перегрузка включена в T4MVC 2.6.56

Да, для полноты мы, вероятно, должны добавить это в T4MVC. Это должно быть легко сделать, за исключением того, что мы закончим много перегрузки, если мы начнем добавлять протокол/имя хоста.

Было бы проще, если бы мы перестали поддерживать Fx 3.5, потому что мы могли бы полагаться на параметры по умолчанию /named, которые очень помогают в уменьшении адвера. Но я до сих пор избегаю этого шага, потому что не все еще в 4.0.

Возможно, я должен заморозить текущую версию как последнюю совместимую с Fx 3.5/MVC 1.x, а затем поддерживать только Fx 4.0/MVC 2 в новых сборках (при сохранении старого до бесконечности). Во всяком случае, я отвлекаюсь:)