如何使用带复选框和下拉菜单的自动回发function?

我有一个Web流(asp.net),它有一个下拉菜单和一个复选框。

勾选复选框后,我需要禁用该表单中的某些字段。 从复选框中选择特定值时,我需要禁用其他字段。

我指定了这样的复选框:

 

和下拉这样:

 <%= Html.MyDropDownList(string.Format("Questions[{0}].Answer", i), (IEnumerable)ViewData["Periods"], Model.Questions[i].Answer)%> 

其中MyDropDownList是Html.DropDownList的扩展

我听说过自动回发 – 但不确定如何使用它 – 任何建议都会很棒!

我正在使用ASP.NET MVC 3。

谢谢! – L.

 <%= Html.CheckBox("IsResponseUnavailable", Model.IsResponseUnavailable, new { onClick = "this.form.submit();" }) %> <%= Html.MyDropDownList(string.Format("Questions[{0}].Answer", i), (IEnumerable)ViewData["Periods"], Model.Questions[i].Answer), new { onchange = "this.form.submit();" }) %> 

这取决于你想要什么。 您是否希望回发到服务器,服务器将使用正确的更改重绘视图? 或者您是否希望在勾选方框时运行javascript以便更改正确的字段? Javascript更顺畅,更容易。 没有一些javascript,真的没有办法做自动回发。 丹尼斯的回答是基本的,它仍然使用javascript。

如果你在回发过程中做了大部分逻辑,听起来你可能会更好地使用webforms而不是MVC。 否则,我会尝试用一些JQuery来丰富你的UI,并利用MVC,因为你正在使用它。

您可以使用一些类似的jQuery来做这个客户端

 $('#IsResponseUnavailable').change(function() { if ($(this).has('[checked]')) { $('#idOfElement').attr('disabled', 'disabled'); } else { $('#idOfElement').removeAttr('disabled'); } }); 

如果您尝试为服务器端重新呈现HTML,那么您可以查看jQuery load()函数

您也可以使用此方法使用jQuery自动提交表单,但我不认为这是您想要做的。