Удаление элементов из списка в форме в ASP.NET MVC без использования JS - PullRequest
0 голосов
/ 09 сентября 2011

Я пытаюсь реализовать форму со списком параметров, которые могут быть добавлены и удалены пользователем. Подвох в том, что я хочу сделать это без javascipt . Это должно быть сделано в ASP.NET MVC 3.

У меня есть такая форма (упрощенный код, поэтому может быть не совсем правильно, я просто иллюстрирую то, что у меня есть):

@using (Html.BeginForm("New", "Films", FormMethod.Post, new { id = "NewFilmForm" }))
    {
        @if (Model.Any())
        {
        <!-- List of directors that have already been added -->
        <div id="AddedDirectors">
            @foreach (var director in Model)
            {
            <span>
                @Html.Hidden("AddedDirectors", @director)
                @Html.Raw(director)
                <!-- JQuery button to remove director -->
                <button class="deleteButton" type="button">x</button>
            </span>
            }
        </div>
        }

        <!-- Interface for adding a new director -->
        <div id="AddDirectorInterface">
            <!-- Jquery show/hide add single director interface -->
            <button type="button" id="AddDirectorButton">+ &nbsp Add a director</button>

            <div>
                @Html.TextBox("AddDirector")

                <!-- Post add button -->
                <button name="SubmitButton" value="@Html.Encode(NewFilmActions.AddDirector)">Add</button>
            </div>            
        </div>

    <button type="submit" name="SubmitButton" value="@Html.Encode(NewFilmActions.Save)">Save film</button>
}

У меня здесь две кнопки отправки. Они обрабатываются с помощью оператора switch в контроллере и идентифицируются с помощью атрибута value, который устанавливается на основе перечисления NewFilmActions.

Нажатие кнопки со значением AddDirector отправляет сообщение в контроллер, добавляет имя, введенное в текстовом поле AddDirector, в модель и снова возвращает представление с формой, добавляя имя, указанное пользователем, в список директоров, которые уже добавлено (см. раздел с комментариями).

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

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

Может ли кто-нибудь сказать мне, как это сделать, или указать мне учебник / объяснения о том, как это реализовать?

Просто чтобы подчеркнуть: я знаю, что это легко сделать с помощью JS, но я собираюсь сделать это полностью на стороне сервера для базовой функциональности и для моего личного образования.

1 Ответ

0 голосов
/ 09 сентября 2011

Я думаю, вам следует уменьшить область действия формы, чтобы она не включала список.

Затем вы можете поместить в себя формы удаления для цикла, как показано ниже;

@foreach (var director in Model)
{
    <span>
        @Html.Raw(director)
        @using (Html.BeginForm("Delete", "Films", FormMethod.Post, new { id = director.Id })){ <button name "DeleteButton" value="Delete">Delete</button>}
    </span>
}

Пример этого также показан в этом блоге

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