我的controller页面是这样的:
public ActionResult Index(int? id,string lb) { ViewBag.DlistProClass = new SelectList(_db.ProClasses, "CodeClass", "Name",lb); var stockslist = _db.Stocks.Where(s=>s.AddDate==DateTime.Today).OrderBy(s=>s.Id).ToPagedList(id?? 1,20); return View(stockslist); } //根据产品类型编码返回材质列表 public ActionResult MaterialByClass(string lb) { var materials = _db.Products.Where(m => m.CodeClass == lb).ToList().Select(a => new SelectListItem() { Text = a.Material.Name != null ? a.Material.Name : "[NO Date}", Value = a.CodeMaterial}); return Json(materials.Distinct()); } //根据材质编码返回产品规格 public ActionResult SpecByMaterial(string cz) { var specs = _db.Products.Where(s => s.CodeMaterial == cz).ToList().Select(s => new SelectListItem() { Text = s.Spec.Name != null ? "Φ"+s.Spec.Name+"mm" : "[No Date]", Value = s.CodeSpec,Selected=true }); return Json(specs); }
View页面是这样的:
<script type="text/javascript"> $(document).ready(function () { $("#CodeMaterial").CascadingDropDown("#lb", '/Home/MaterialByClass'); $("#CodeSpec").CascadingDropDown("#CodeMaterial", '/Home/SpecByMaterial'); }); $(document).ready(function () { $("#lb").change(); }); </script> <div id="Fiter"> <div id="search"> @using (Html.BeginForm("Index", "Home", FormMethod.Get, new { name = "nbform" })) { <table width="770" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="50" align="right">品名:</td> <td>@Html.DropDownList("lb", ViewBag.DListProClass as SelectList, "--全部--", new { @style = "width:80px" })</td> <td width="50" align="right">材质:</td> <td> <select id="CodeMaterial" name="cz"></select> </td> <td width="50" align="right">规格:</td> <td> <select id="CodeSpec" name="gg"></select> </td> <td width="260"><img alt="点击搜索" src="/Content/images/searchbtn.gif" onclick="document.forms['nbform'].submit()" style="cursor:pointer"/></td> </tr> </table> }
我想实现的功能见下图(提交查询以后还能保持如下状态):
产品分类:材质:规格:
比如我要提交的菜单选项是象下图一样的:
提交后返回值也应该是在这个状态,而不是提交后全部恢复为初始状态了,就象下面的视图一样:
============================
你说的在Action里做?那怎么去做呢?我试了N次了还是不行,能给个示例吗?谢谢!
submit之后,服务器端需要有一个对应的Action进行处理。通常这个Action是接受POST请求的,你可以在这个Action里面返回数据的时候,恢复原来的样子
另外,你的界面和代码都不一致的。
我使用另一种方式解决了,上面这种方式很不灵活。