出于某种原因,我坚持这一点.我需要在同一视图中根据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"/>
<%} %>
Run Code Online (Sandbox Code Playgroud)
这是获取依赖列表进行过滤的关键:
new { onchange = "this.form.submit();" }
Run Code Online (Sandbox Code Playgroud)
在控制器中,你会有这样的事情:
[AcceptVerbs(HttpVerbs.Post)]
public ViewResult Index(string btnSubmit)
{
if (btnSubmit == null)
{
// return the view displayed upon GET
}
else
{
// process the submitted data
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,如果通过更改下拉列表中的值来触发表单提交,则btnSubmit将为null.因此,您发布的操作可以判断用户是否打算完成更改.
添加早期的答案.
要创建下拉列表(在ASP .NET MVC 3中),我执行了以下操作:
将代码添加到Index.cshtml
@using (Html.BeginForm())
{
@Html.DropDownList("EmployeeId", (SelectList)ViewData["EmployeeId"])
<input type="submit" name="btnSubmit" value="Submit"/>
}
Run Code Online (Sandbox Code Playgroud)
在默认的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);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21112 次 |
最近记录: |