如何在mvc页面

时间:2016-06-26 20:44:44

标签: asp.net-mvc drop-down-menu

<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中的默认加载视图?

由于

0 个答案:

没有答案