我有一个网络流(asp.net),它有一个下拉菜单和一个复选框。
勾选复选框后,我需要禁用该表单中的某些字段。 从复选框中选择特定值时,我需要禁用其他字段。
我指定了这样的复选框:
<%=Html.CheckBox("IsResponseUnavailable", Model.IsResponseUnavailable)%>
这样下拉:
<%= Html.MyDropDownList(string.Format("Questions[{0}].Answer", i), (IEnumerable<SelectListItem>)ViewData["Periods"], Model.Questions[i].Answer)%>
其中MyDropDownList是Html.DropDownList
的扩展名我听说过自动回发 - 但不确定如何使用它 - 任何建议都会很棒!
我正在使用ASP.NET MVC 3。
谢谢! - L
答案 0 :(得分:10)
<%= Html.CheckBox("IsResponseUnavailable", Model.IsResponseUnavailable,
new { onClick = "this.form.submit();" }) %>
<%= Html.MyDropDownList(string.Format("Questions[{0}].Answer", i),
(IEnumerable<SelectListItem>)ViewData["Periods"], Model.Questions[i].Answer),
new { onchange = "this.form.submit();" }) %>
答案 1 :(得分:3)
这取决于你想要什么。您是否希望回发到服务器,服务器将使用正确的更改重绘视图?或者您是否希望在勾选方框时运行javascript以便更改正确的字段? Javascript更顺畅,更容易。没有一些javascript,真的没有办法做自动回发。丹尼斯的回答是基本的,它仍然使用javascript。
如果你在回发期间做了大部分逻辑,听起来你可能会更好地使用webforms而不是MVC。否则,我会尝试用一些JQuery来丰富你的UI,并利用MVC,因为你正在使用它。
答案 2 :(得分:1)
你可以使用一些类似
的jQuery来做这个客户端$('#IsResponseUnavailable').change(function() {
if ($(this).has('[checked]')) {
$('#idOfElement').attr('disabled', 'disabled');
}
else {
$('#idOfElement').removeAttr('disabled');
}
});
如果您尝试为服务器端重新呈现HTML,那么您可以查看jQuery load() function
您也可以使用jQuery using this method自动提交表单,但我认为这不是您想要做的。