在ASP.NET MVC中处理级联下拉列表其他回发方案的最佳实践

时间:2009-05-20 12:39:31

标签: asp.net-mvc

我已经看到了一些使用jQuery和Ajax处理ASP.NET MVC中的级联下拉列表的示例。当然,这需要启用javascript。假设javascript被禁用,那么处理级联下拉列表的最佳做法是什么。

这是我为我工作的公司开发的库存应用程序开发的asp.net Web表单的真实场景。在网页上我有级联下拉列表。对于这个例子,请说一下汽车制造的下拉列表和取决于所选汽车制造的汽车模型。此外,在此表单上,我有一个实现搜索功能的用户控件,以便用户可以进入城市和/或状态,选择搜索,并从gridview中选择客户,这会触发事件以将客户ID存储在字段中网页上的当前订单。我在这个页面上没有使用javascript。下拉列表触发回发并在第二次下拉列表中重新加载下拉列表值。当用户单击“查找”按钮时以及用户从网格视图中选择客户时,搜索用户控件将导致回发。

如何在MVC中处理?我的例子中的回发是否等同于MVC中的操作?是否会有改变汽车制造的行动?搜索的动作?从gridview中选择的动作?

2 个答案:

答案 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更改操作名称,然后提交表单。

希望这可能有所帮助。