нужна помощь при отправке данных из представления на контроллер в бритве MVC - PullRequest
0 голосов
/ 21 апреля 2020

Мне нужна помощь, чтобы выяснить, как отправить данные в контроллер. У меня есть три поля.

  1. Playlistname, это просто текстовое поле
  2. Количество песен, это слайдер, с помощью которого вы можете выбрать желаемое количество песен.
  3. Исполнитель. Чтобы найти исполнителя, введите его имя в текстовое поле и нажмите кнопку. это делает запрос ajax и получает список артистов-моделей. все они показаны в одном частичном представлении. для каждого художника я делаю div, в котором также есть кнопка. Когда вы нажимаете эту кнопку, вы должны быть отправлены на другую страницу. И все данные также должны быть отправлены вместе с ним, название списка воспроизведения, количество песен и идентификатор исполнителя.

это представление / индекс:

<form asp-controller="Data" asp-action="CreatePlaylist" method="post">
    <div style="margin:10%">
        <h1 class="txt">Name of playlist:</h1>
        <input placeholder="New playlist" class="input" type="text" name="nameinput" id="nameinput" required>
        <br />
    </div>

    <div style="margin:10%">
        <h1 class="txt">Amount of songs:</h1>
        <input class="slider" type="range" id="amount" />
        <br />
    </div>

    <div style="margin:10%">
        <h1 class="txt">Search for artist:</h1>
        <input placeholder="Favorite artist" class="input" type="text" id="artistinput">
        <br />
        <input type="button" class="click" onclick="SearchArtist()" />
        <div id="artistlist" style="text-align: center; width: min-content; margin: auto;"></div>
    </div>
</form>


<script>
    function SearchArtist() {
        var input = document.getElementById("artistinput").value;
        if (input != null) {
        $.ajax({
                url: "@Url.Action("GetArtists","Data")",
                data: { "input": input },
                success: function (result) {
                    $("#artistlist").empty();
                    $("#artistlist").append(result);
                },
                error: function() {
                    alert("Cannot load artists");
                }
            });
        }
    }
</script>

и это частичное представление списка артистических моделей:

@using app.models
@model List<app.models.ArtistModel>;

@if (!@Model.Any())
{
    <h2>No artists found</h2>
}

@foreach(ArtistModel artist in @Model)
{
    <div class="songholder">
        <div class="songbox">
            <a href="@artist.url" target="_blank">
                @if (@artist.imageurl != null)
                {
                    <img src="@artist.imageurl" class="songimg"/>
                }
                else
                {
                    <img src="photos/placeholder.jpg" class="songimg"/>
                }
            </a>
            <a href="@artist.url" class="songtxt" target="_blank" style="position: relative; float: left; margin: 2px; text-decoration: none">@artist.name</a>
            <a class="songtxt" style="position: relative; float: right; margin: 2px">Followers: @artist.followers</a>
            <input type="button" class="click" value="@artist.id" id="artistid"/>
        </div>
    </div>
}

Я не знаю, почему это не работает. Контроллер даже не вызывается.

...