Тег <a>в asp.net mvc не работает в проекте, а работает в другом - PullRequest
0 голосов
/ 11 декабря 2018

Я создаю новый сайт ASP.NET.Я создал несколько ранее, поэтому я посмотрел на свой старый код:

<div class="col-sm-6 col-md-6 col-lg-4">
    <a asp-action="Details" asp-route-controller="Restaurants" asp-route-id="@item.ID">
        <h4 style="white-space: nowrap;overflow: hidden;text-overflow:ellipsis;">@Html.DisplayFor(ModelItem => item.Nom)</h4>
        <img src="~/images/@(nomImage) " alt="image article" />
        <p>Prix : @Html.DisplayFor(ModelItem => item.PrixApproximatifPourDeux)$</p>
        <p>Type de cuisine : @Html.DisplayFor(ModelItem => item.TypeCuisine.Nom)</p>
    </a>
</div>

URL, который создает ASP.NET, выглядит так: https://localhost:44316/Restaurants/Details/3

В моем новом проекте яМы написали этот код:

<div class="col-sm-6 col-md-6 col-lg-4">
    <a asp-action="Details" asp-route-controller="Produits" asp-route-id="@item.ID">
        <h4 style="white-space: nowrap;overflow: hidden;text-overflow:ellipsis;">@Html.DisplayFor(ModelItem => item.nom)</h4>
        <img src="@Html.DisplayFor(ModelItem => item.image)" alt="image-produit" />
        <p>Prix : @Html.DisplayFor(ModelItem => item.prix)</p>
        @Html.ActionLink("Voir le produit", "Details", "Produits", new { item.ID }, null)
    </a>
</div>

Контроллеры и представления могут отличаться, но весь код более или менее одинаков.Единственный способ, которым я могу перенаправить в новом проекте, это использовать Html.ActionLink, но пользователь должен щелкнуть по тексту напрямую, , и моя цель - сделать весь <div> ссылкой.Как в моем первом проекте.

Что-то не так с моим проектом?Или с моим кодом?

Могу ли я расширить использование Html.ActionLink более чем на текст?

1 Ответ

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

Я не уверен, почему код в новом проекте не работает, как код в старом.Если вы хотите это выяснить, вам, возможно, придется опубликовать весь новый проект.

@Html.ActionLink("Voir le produit", "Details", "Produits", new { item.QuoteID }, null) создает целый тег <a href=".."></a>, тогда как @Url.Action просто создает URL, например, Restaurants/Details/3.Хорошее объяснение разницы между Html.ActionLink и Url.Action здесь .

Попробуйте использовать Url.Action вместо этого, например так:

<div class="col-sm-6 col-md-6 col-lg-4">
    <a href="@Url.Action("Details", "Produits", new { id = item.ID })">
        <h4 style="white-space: nowrap;overflow: hidden;text-overflow:ellipsis;">@Html.DisplayFor(ModelItem => item.nom)</h4>
        <img src="@Html.DisplayFor(ModelItem => item.image)" alt="image-produit" />
        <p>Prix : @Html.DisplayFor(ModelItem => item.prix)</p>
    </a>
</div>

Вы можете расширить Html.ActionLink, чтобы включить другие теги, такие как теги <h4> и <img> в ваш код, но сделать это - 1020 * несколько странно .Здесь уместно просто использовать Url.Action.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...