<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<p>
@using (Html.BeginForm())
{
<p>
@Html.DropDownList("StatusType","Select a Value")
<input type="submit" value="Filter" />
</p>
}
<p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.RequestHeading)
</th>
<th>
@Html.DisplayNameFor(model => model.RequestDescription)
</th>
希望我提出正确的问题。我正在将实体框架与MVC结合使用。已经使用标准脚手架和MVC控制器,这导致了标准的CRUD视图。
我更改了控制器中的索引任务,只给了那些与我的Windows身份验证登录相匹配的记录以及那些具有'open'状态类型的记录。
控制器代码:
public async Task<ActionResult> Index(string StatusType)
{
IEnumerable<SelectListItem> statusitems = db.StatusTypes.Select(c => new SelectListItem
{
Selected = c.Id == 1,
Value = c.StatusTypeDescription,
Text = c.StatusTypeDescription
});
ViewBag.StatusType = statusitems;
var serviceRequests = db.ServiceRequests.Include(s => s.Category).Include(s => s.Member).Include(s => s.Priority).Include(s => s.RequestType).Include(s => s.RequestTypeStep).Include(s => s.StatusSet).Include(s => s.SubCategory).Include(s => s.TeamMember).Include(s => s.Team);
//serviceRequests = serviceRequests.Where(s => s.RequestorID.Contains(User.Identity.Name));
//serviceRequests = serviceRequests.Where(s => s.ServiceRequest_Status == 3 );
serviceRequests = from sr in db.ServiceRequests
join ss in db.StatusSets on sr.ServiceRequest_Status equals ss.Id
join st in db.StatusTypes on ss.Status_StatusType equals st.Id
where sr.RequestorID.Contains(User.Identity.Name) & st.StatusTypeDescription== StatusType
select sr;
return View(await serviceRequests.ToListAsync());
}
控制器将状态类型加载到选择列表项中。 C.Id == 1是'开放'的statustype。
在视图htnl中,我有以下代码等来填充下拉列表:
这一切都有效,但行为并不是我想要的。
视图和控制器当前的作用是什么,它确实将html.dropdown默认为'open'statustype。当我单击过滤器按钮-INDEED时,它会将表中的记录过滤为仅“打开”的请求记录。当我在html.dropdown上选择'关闭'时,它确实只选择关闭。
但如果我没有点击过滤按钮 - 表格中没有任何记录。
我想要的是视图采用我已正确默认的'open'statustype并使用THAT并在加载视图时默认填充表。换句话说,我希望视图最初加载打开的记录而不必单击过滤器按钮
查看看起来像这样 enter image description here
我在这里缺少什么 - 最初使用html.dropdown中的默认加载视图?
由于