出于某种原因,我坚持这一点.我需要在同一视图中根据DropDownList过滤View中的结果.基本思路是:我有一个属于各种合作伙伴的提供商列表,但提供商列表包含所有提供商(适用于所有合作伙伴).当有人想要查看该合作伙伴时,我需要能够通过合作伙伴显示提供商(否则,默认列表将是所有提供商).我的观点目前是"默认"(显示全部),但出于某种原因,我坐在这里盯着显示器(过去2小时!)试图弄清楚如何过滤这些结果.
有什么建议从哪里开始/怎么做?!
Jos*_*off 10
编辑:如果你想用jQuery和AJAX(这将提供更好的用户体验,因为只刷新细分列表),请参阅本教程.
如果我理解正确,你基本上想要做一个WebForms风格的回发.
假设您拥有国家和国家/地区细分(例如州,省等)的控制权.当国家/地区发生更改时,您需要显示相应的细分.
所以这将是观点:
<% using (Html.BeginForm()) { %>
    <%=Html.DropDownList("Address.CountryId", new SelectList(Country.GetAll(), "Id", "Name"), new { onchange = "this.form.submit();" })%>
    <%=Html.DropDownList("Address.CountrySubdivisionId", new SelectList(CountrySubDivision.GetByCountryId(Model.CountryId), "Id", "Name"))%>
    <input type="submit" name="btnSubmit" value="Submit"/>
<%} %>
这是获取依赖列表进行过滤的关键:
new { onchange = "this.form.submit();" }
在控制器中,你会有这样的事情:
    [AcceptVerbs(HttpVerbs.Post)]
    public ViewResult Index(string btnSubmit)
    {
        if (btnSubmit == null)
        {
            // return the view displayed upon GET
        }
        else
        {
            // process the submitted data
        }
    }
在上面的代码中,如果通过更改下拉列表中的值来触发表单提交,则btnSubmit将为null.因此,您发布的操作可以判断用户是否打算完成更改.
添加早期的答案.
要创建下拉列表(在ASP .NET MVC 3中),我执行了以下操作:
将代码添加到Index.cshtml
@using (Html.BeginForm())
{      
@Html.DropDownList("EmployeeId", (SelectList)ViewData["EmployeeId"])     
 <input type="submit" name="btnSubmit" value="Submit"/> 
}
在默认的ActionResult中为Index()添加代码到YourModelNameController.cs
public ActionResult Index()
{
    //create a selectlist
        var employeeList = from el in db.Employee select el;
        ViewData["EmployeeId"] = new SelectList(employeeList, "EmployeeId", "TmName");
        return View(modelName);
    }
| 归档时间: | 
 | 
| 查看次数: | 21112 次 | 
| 最近记录: |