C# 过滤器ViewModel无法使用ASP MVC
我想用dropdownlist过滤数据。为此,我创建了一个ViewModel。我可以显示数据,但过滤器不起作用。当我选择一个国家作为示例时,我的网格中有所有国家的列表。就像HttpPost在控制器中不工作一样 在我的viewmodel中,我有以下脚本: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; }
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)
;