C# MVC Метод контроллера не заполняется элементом из вида - PullRequest
0 голосов
/ 13 марта 2020

C# newb ie здесь.

Проверено «Передача данных между контроллерами представления», но у него был большой синтаксис, с которым я в настоящее время незнаком. Дальнейшие исследования запланированы на потом - например, протоколы и проекты делегатов.

Root: Создание приложения ASP. NET. Элемент из списка, заполненного foreach, в представлении не может быть заполнен в домашнем контроллере:

Синтаксис представления

<input type="text" id="deviceId"/>
@Html.ActionLink("Add Device", "Add", new { /*id=item.PrimaryKey*/})
<table class="table">
    <thead>
        <tr>
            <th>Include</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model.include)
        {
            <tr>
                <td>
                    <p>@Html.DisplayFor(m => item)</p> |
                    @Html.ActionLink("Exclude", "Exclude", new { /*id=item.PrimaryKey*/ }) |
                   ==> <a asp-controller="Home" asp-action="Delete" asp-route-id="@item" class="btn btn-danger">Delete</a> 
                </td>
            </tr>
        }
    </tbody>
</table>

<table class="table">
    <thead>
        <tr>Exclude</tr>
    </thead>
    <tbody>
        @foreach (var item in Model.exclude)
        {
            <tr>
                <td>
                    <p>@Html.DisplayFor(m => item)</p> |
                    @Html.ActionLink("Include", "Include", new { /* id=item.PrimaryKey */ }) |
                    @Html.ActionLink("Delete", "Delete", new {  })
                </td>
            </tr>
        }
    </tbody>
</table>

Метод удаления контроллера

  public IActionResult Delete(==>string id)
        {
            var theList = DeviceDictionaryConversion.DevDictionaryDEV();

            theList.include.Remove(id);

            return View("ListModDev", theList);
        }

проверка чтобы убедиться, что это правильный тип данных для объекта из представления, или какие другие идеи я не могу полностью понять здесь. Опять же, точки останова из примера выполнения показывают выполнение кода в методе контроллера «Удалить».

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Таким образом, ошибка, по-видимому, относится к типу метода HTTP, используемого для обработки удаления контроллера.

Переключение на GET из POST решило проблему.

0 голосов
/ 13 марта 2020

Ну, во-первых, я не верю, что ==> - это правильный синтаксис .... или любой другой синтаксис для этого случая.

Два: Здесь вы говорите, что когда на него нажимают

@Html.ActionLink("Delete", "Delete", new {  })

Вызовите метод Delete. Но Delete ожидает параметр id, который вы не предоставляете. Также нет смысла делать это new { }, если вы ничего не передаете.

Однако, если вы хотите, чтобы этот метод принимал параметр, а не параметр, вы можете присвоить параметру значение, такое как:

 public IActionResult Delete(string id = "")    // Set to empty string

Вместо <a asp-controller="Home" asp-action="Delete" asp-route-id="@item" class="btn btn-danger">Delete</a> пробовали ли вы использовать @Url.Action()? Я нахожу это намного проще, так как все, что вам нужно сделать, это:

@Url.Action("Delete", "Home", new {id = @item})    // Assuming that `@item` is a string

IE

<a href="@Url.Action("Delete", "Home", new {id = @item})" class="btn btn-danger">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...