Как по нажатию на ссылку <a> выполнить код C# ASP.NET Core 3

177
18 апреля 2022, 06:00

Допустим есть cshtml код :

<ul>
    <li><a onclick="" href="">Article 1</a></li>
    <li><a onclick="" href="">Article 2</a></li>
    <li><a onclick="" href="">Article 3</a></li>
</ul>

И мне нужно при нажатии на эту ссылку показывать разные данные, которые я беру из БД. Данные я вывожу на страницу вот так:

@{
    var a = Model.Articles.Single(x => x.Id == 1);
    @Html.Raw(a.Header);
    @Html.Raw(a.Content);
}

Но это только для первой статьи, если я модифицирую c# код до метода:

@{
    void GetContent(int id)
    {
        var a = Model.Articles.Single(x => x.Id == id);
        @Html.Raw(a.Header);
        @Html.Raw(a.Content);
    }
}

, и буду туда передавать ID вот так: onclick="GetContent(1)" , то получится, что кнопка на старте программы раз 10 нажмется и испортит страницу(. Я уже немало вариантов перепробовал и уже совсем нет идей что с этим делать... Пробовал и JS, но у меня что-то не получилось. Может быть мне как-то исправить подход и это плохая идея - уместить статьи на одной странице.

Answer 1

Решил проблему отойдя от идеи делать все на одном url.

Как исправил:

Index.cshtml:

@model System.String
<ul>
    <li>
        <a asp-controller="Article" asp-action="GetArticle" asp-route-id=1>company_list.php</a>
    </li>
</ul>
@if (Model != null)
{
    @Model
    //Если html страница в контент, то Html.Raw(Model);
}

ArticleController.cs:

public IActionResult GetArticle(int id) 
        {
            var a = db.Articles.SingleOrDefault(x => x.Id == id);
            if (a != null)
            {
                
                return View("Index", a.Content);
            }
            return View("Index");
        }
READ ALSO
Затемнение тайловой карты

Затемнение тайловой карты

Делаю игру, похожую та terraria или starboundУ меня есть две тайловые карты, одна передняя с коллайдером, а вторая задняя, как бы на фоне

122
Проверка PlayerPrefs.HasKey по типу String не реагирует. Unity3D

Проверка PlayerPrefs.HasKey по типу String не реагирует. Unity3D

Есть переменная Nickname типа string и десяток переменных типа intВсе они прекрасно записываются в реестр и там отображаются, но при попытке подгрузить...

141
СДК для трекинга в юнити? [закрыт]

СДК для трекинга в юнити? [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

144