C# 过滤器ViewModel无法使用ASP MVC

C# 过滤器ViewModel无法使用ASP MVC,c#,asp.net-mvc,post,filter,viewmodel,C#,Asp.net Mvc,Post,Filter,Viewmodel,我想用dropdownlist过滤数据。为此,我创建了一个ViewModel。我可以显示数据,但过滤器不起作用。当我选择一个国家作为示例时,我的网格中有所有国家的列表。就像HttpPost在控制器中不工作一样 在我的viewmodel中,我有以下脚本: public class IndexGetViewModel { public List<missions_supportmission> missions_supportmission { get; set; }

我想用dropdownlist过滤数据。为此,我创建了一个ViewModel。我可以显示数据,但过滤器不起作用。当我选择一个国家作为示例时,我的网格中有所有国家的列表。就像HttpPost在控制器中不工作一样

在我的viewmodel中,我有以下脚本:

    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>
@使用(Html.BeginForm(“Index”,“Missions”,FormMethod.Get))
{
本土化
@LabelFor(model=>model.CountryIdSelected,“Country”,htmlAttributes:new{@class=“controllabel col-md-2”})
@Html.DropDownListFor(model=>model.CountryIdSelected,model.CountryList,htmlAttributes:new{onchange=“form.submit();”,@class=“form control”})
@Html.ValidationMessageFor(model=>model.CountryIdSelected,“,new{@class=“text danger”})
}
@使用(Html.BeginForm(“Index”,“Missions”,FormMethod.Get))
{
@文本框(“搜索”)
}
使命

@ActionLink(“新建”、“创建”)

@使用(Html.BeginForm(“索引”)) { 支付 日期 人员 使命 } @foreach(模型任务\支持任务中的var项目) { @DisplayFor(modelItem=>item.organization\u hi\u country.name\u en) @DisplayFor(modelItem=>item.asked\u日期) @DisplayFor(modelItem=>item.type\u任务) Mission@Html.DisplayFor(modelItem=>item.list\u type.name\u en):@Html.DisplayFor(modelItem=>item.list\u nature.name\u en) Statut:@Html.DisplayFor(modeleItem=>item.list\u Statut.name\u en)

Durée:@Html.DisplayFor(modelItem=>item.duration)jours

Flexibilité:@Html.DisplayFor(modeleItem=>item.list\u flexibility.name\u en)

优先级:@Html.DisplayFor(modeleItem=>item.list\u priority.name\u en)

注释:@Html.DisplayFor(modelItem=>item.comments)

@ActionLink(“编辑”,“编辑”,新的{/*id=item.PrimaryKey*/}) @ActionLink(“详细信息”,“详细信息”,新的{id=item.id}) @ActionLink(“删除”,“删除”,新的{/*id=item.PrimaryKey*/}) }
您使用的是FormMethod。Get而不是FormMethod。Post

页面上有两个表单提交回
索引
操作。你提交的是哪一个?(您下拉列表中的表单甚至没有提交按钮,您如何提交该表单?)此外,您的表单是
GET
表单,而不是
POST
。那么是什么导致
HttpPost
操作触发呢?这里似乎有很多错误……我尝试用以下代码提交表单:
htmlAttributes:new{onchange=“form.submit();”,@class=“form control”}
你是不是想在表单上使用
FormMethod.Post
而不是
FormMethod.Get
?我将Get forms更改为Post form,现在我遇到了以下错误系统。NullReferenceException:
对象引用未在该脚本上的对象实例中定义:
missions.organization\u hi\u country=this.db.organization\u hi\u country.Find(GetVM.CountryIdSelected)