Как обновить только один конкретный div, используя Ajax.ActionLink, если в View есть несколько копий div - PullRequest
0 голосов
/ 26 декабря 2018

Я настраиваю веб-сайт для своего университетского проекта, и у меня возникла проблема с обновлением View с использованием Ajax.ActionLink.Я создал главную страницу, похожую на «9gag», где много картинок хранятся друг под другом, и все они одинаковые.Когда я пытаюсь объявить div, он будет хорошо работать на бэкенде, но всегда будет обновлять только первую копию элемента вместо той, которую я хочу.

View:

    @foreach (var item in Model.gagList)
    {
        <div class="gag-object">
            <span class="gag-title">@Html.DisplayFor(modelItem => item.Title)</span><br />
            <img class="gag-picture" src="~/UserGagImages/@Html.DisplayFor(modelItem => item.Picture)" style="width:460px"> <br />

            <a href=@Url.Action("IndexCategory", "Home", new { CategoryName = item.Category.CategoryName }) style="text-decoration: none;" class="action-text"> <span class="gag-span">@Html.DisplayFor(modelItem => item.Category.CategoryName)</span><br /></a>
            <div class="gag-points" id="gag-points">
                <span class="gag-title">@Html.DisplayFor(modelItem => item.Points)</span><br />
            </div>
            <div class="gag-vote">
                <a style="color: deepskyblue; font-size: 20px;" class="fas fa-arrow-up" href="@Url.Action("Upvote","Home", new { id = item.GagId })"></a>
                <a style="color: deepskyblue; font-size: 20px;" class="fas fa-arrow-down"></a>
                @Ajax.ActionLink("Upvote",
                  "Upvote",
                  new { id = item.GagId },
                  new AjaxOptions
                  {
                      HttpMethod = "GET",
                      UpdateTargetId = "gag-points",
                      InsertionMode = InsertionMode.Replace
                  },
                  new { @class = "ajax-btn3", id = "myajaxLink", gagId = item.GagId })

            </div>

        </div>
        <hr />

    }

Контроллер:

        public ActionResult Upvote(int id)
    {
        Gag gagUpvote = new Gag();
        if (Request.IsAuthenticated)
        {
            using (IGagsEntities1 context = new IGagsEntities1())
            {
                gagUpvote = context.Gags.Where(a => a.GagId == id).FirstOrDefault();
                gagUpvote.Points += 1;
                context.SaveChanges();
            }
        }
        return PartialView("Points", gagUpvote);
    }

Частичное представление:

<span class="gag-title">@Html.DisplayFor(modelItem => modelItem.Points)</span><br />

И эта комбинация не обновляет нужный div, но всегда первая копия.Если у вас есть идеи, как установить его так, чтобы он получал желаемый div, я был бы благодарен за любые советы!

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