我已经看到了一些使用jQuery和Ajax处理ASP.NET MVC中的级联下拉列表的示例。当然,这需要启用javascript。假设javascript被禁用,那么处理级联下拉列表的最佳做法是什么。
这是我为我工作的公司开发的库存应用程序开发的asp.net Web表单的真实场景。在网页上我有级联下拉列表。对于这个例子,请说一下汽车制造的下拉列表和取决于所选汽车制造的汽车模型。此外,在此表单上,我有一个实现搜索功能的用户控件,以便用户可以进入城市和/或状态,选择搜索,并从gridview中选择客户,这会触发事件以将客户ID存储在字段中网页上的当前订单。我在这个页面上没有使用javascript。下拉列表触发回发并在第二次下拉列表中重新加载下拉列表值。当用户单击“查找”按钮时以及用户从网格视图中选择客户时,搜索用户控件将导致回发。
如何在MVC中处理?我的例子中的回发是否等同于MVC中的操作?是否会有改变汽车制造的行动?搜索的动作?从gridview中选择的动作?
答案 0 :(得分:0)
除非是大量数据,否则您应该考虑使用< optgroup>用于显示分组的标签。从可访问性的角度来看,这也是一件好事。
虽然值得注意的是,optgroup仅适用于层次结构的一个级别。
答案 1 :(得分:0)
我的情况是我有三个下拉菜单,每个下降值取决于前一个值。
我知道每当表单发布时 它转到特定的ActionName和 默认情况下它将与。相同 aspx页面名称,如果是的话 Index.aspx,发布时调用 方法Index()坐在其中 控制器。
上述行为引起了一些问题,所以
From:<%=Html.DropDownList("From", (SelectList)ViewData["From"], new { onchange = "this.form.action='Index'; this.form.submit();" })%>
To :<%=Html.DropDownList("To", (SelectList)ViewData["To"], new { onchange = "this.form.action='GetTo'; this.form.submit();" })%>
我首先将动作名称更改为“GetTo”然后发布数据,因此它将转到控制器的GetTo方法而不是Index()。
在这里,我使用javascript更改操作名称,然后提交表单。
希望这可能有所帮助。