Razor: перевод href с атрибутами _blank, noopener, noreffer в Html ActionLink - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу создать URL с, например, Html ActionLink, который открывается в новой вкладке и имеет noopener + noreferrer значения для `rel``

<a 
    target="_blank"
    rel="noopener noreferrer"
    href="https://localhost:5001/Gallery/View?file=@Model?.Image?.Id">
    @Model?.Image?.Title
</a>

Но так у меня есть жестко закодированный URL

Я пробовал что-то вроде этого:

<a 
target="_blank"
rel="noopener noreferrer" 
href="@Html.ActionLink(item?.Image?.Title, "View", "Gallery", new { file = item?.Image?.Id })">
</a>

или

<a 
target="_blank" 
rel="noopener noreferrer" 
@Html.ActionLink(item?.Image?.Title, "View", "Gallery", new { file = item?.Image?.Id })>
</a>    

Но он борется с выходом из html и заканчивается чем-то вроде

<a target="_blank" rel="noopener noreferrer" <a href="/Gallery
/View?file=123">Testimage.jpg</a>></a>

Таким образом, ссылка обычно работает, но она разрушает структуру HTML.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Помощник Html.ActionLink сгенерирует весь тег <a>.так что вам нужно использовать его снаружи.Просто используйте следующий код на своей странице без тега <a>

@Html.ActionLink(item?.Image?.Title, "View", "Gallery", new { file = item?.Imnage?.Id }, new { target = "_blank", rel = "noopener noreferrer" })

пример

    <div>
       @Html.ActionLink("Testimage.jpg", "View", "Gallery", new { file = 1 }, new { target = "_blank", rel = "noopener noreferrer" })
   </div>

даст вам следующий результат.

    <div>
       <a href="/Gallery/View?file=1" rel="noopener noreferrer" target="_blank">Testimage.jpg</a>
   </div>
0 голосов
/ 11 декабря 2018

Да, это было проще, чем я думал ...

Решение:

<a 
    target="_blank"
    rel="noopener noreferrer"
    href="@Url.Action("View", "Gallery", new { file = item?.Imnage?.Id })">
    @item?.Image?.Title
</a>
...