Фильтр ViewModel не работает ASP MVC - PullRequest
0 голосов
/ 22 октября 2018

Я хочу отфильтровать данные с помощью dropdownlist. Для этого я создал ViewModel.Я могу отобразить данные, но фильтр не работает. Когда я выбираю страну для примера, у меня есть список всех стран в моей сетке.Как будто HttpPost не работает в контроллере ...

В моей модели просмотра у меня есть следующий скрипт:

    public class IndexGetViewModel
{
    public List<missions_supportmission> missions_supportmission { get; set; }
    public missions_supportmission missions { get; set; }
    public  SelectList CountryList { get; set;  }
    public string CountryIdSelected { get; set; }
}

В контроллере у меня есть следующий скрипт:

        private Missions_devEntities db = new Missions_devEntities();

    //
    // GET: /Missions/Index

    public ActionResult Index()
    {
        IndexGetViewModel model = new IndexGetViewModel();
        //Affichage de geo division
        model.CountryList = new SelectList(this.db.organization_hi_country.ToDictionary(b => b.country_id, b => b.name_en), "Key", "Value");
        model.missions_supportmission = db.missions_supportmission.ToList() ;
        return View(model);          
    }

    //POST: /Missions/Index
    [HttpPost]
    public ActionResult Index(IndexGetViewModel GetVM)
    {
        missions_supportmission missions = GetVM.missions;
        //on cherche le le pays sélectionné dans la table missions
        missions.organization_hi_country = this.db.organization_hi_country.Find(GetVM.CountryIdSelected);
        //On affiche les pays dans la table missions
        GetVM.missions_supportmission = db.missions_supportmission.Include(s => s.organization_hi_country).Where(s => s.organization_hi_country.country_id == GetVM.CountryIdSelected).ToList();
        return View(GetVM);
    }

На мой взгляд, у меня есть следующий сценарий:

 @using (Html.BeginForm("Index", "Missions", FormMethod.Get))
    {

        <section>
            <h3>Localisation</h3>
            <div class="form-group">
                @Html.LabelFor(model => model.CountryIdSelected, "Country", htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.DropDownListFor(model => model.CountryIdSelected, Model.CountryList, htmlAttributes: new { onchange = "form.submit();", @class = "form-control" })
                    @Html.ValidationMessageFor(model => model.CountryIdSelected, "", new { @class = "text-danger" })
                </div>
            </div>
        </section>
    }
</nav>

    <div id="content" class="container">
        @using (Html.BeginForm("Index", "Missions", FormMethod.Get))
        {
            @Html.TextBox("searching")
            <input type="submit" value="submit" />
        }

<div>
    <h2>Missions</h2>
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table class="table table-bordered">
        @using (Html.BeginForm("Index"))
        {
            <tr>
                <th class="col-md-2">
                    Pays
                </th>
                <th class="col-md-1">
                    Date
                </th>
                <th class="col-md-2">
                    Personne
                </th>
                <th class="col-md-10">
                    Missions
                </th>
                <th class="col-md-10">
                </th>
            </tr>
        }

        @foreach (var item in Model.missions_supportmission)
        {
            <tr>
                <td class="col-md-2">
                    @Html.DisplayFor(modelItem => item.organization_hi_country.name_en)
                </td>

                    <td class="col-md-1">
                        @Html.DisplayFor(modelItem => item.asked_date)
                    </td>
                    <td class="col-md-2">
                        @Html.DisplayFor(modelItem => item.type_mission)
                    </td>
                    <td class="col-md-10">
                        Mission @Html.DisplayFor(modelItem => item.list_type.name_en) : @Html.DisplayFor(modelItem => item.list_nature.name_en)
                        <div>
                            <!-- les boutons d'actions -->
                            <a href="#@Html.DisplayFor(modelItem => item.id)" data-toggle="collapse" aria-expanded="false" aria-controls="@Html.DisplayFor(modelItem => item.id)">details</a>
                        </div>
                        <!-- le contenu masqué -->
                        <section id="@Html.DisplayFor(modelItem => item.id)" class="collapse">
                            <div class="well">
                                <p><em>Statut: </em>@Html.DisplayFor(modelItem => item.list_statut.name_en)</p>
                                <p><em>Durée: </em>@Html.DisplayFor(modelItem => item.duration) jours</p>
                                <p><em>Flexibilité: </em>@Html.DisplayFor(modelItem => item.list_flexibility.name_en) </p>
                                <p><em>Priorité: </em>@Html.DisplayFor(modelItem => item.list_priority.name_en) </p>
                                <p><em>Commentaires: </em>@Html.DisplayFor(modelItem => item.comments) </p>
                            </div>
                        </section>

                    </td>
                    <td class="col-md-10">
                        @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ })
                        @Html.ActionLink("Details", "Details", new { id = item.id })
                        @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
                    </td>

            </tr>
        }

    </table>

1 Ответ

0 голосов
/ 22 октября 2018

Вы используете FormMethod.Get вместо FormMethod.Post

...