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

时间:2011-03-03 14:21:48

标签: c# asp.net asp.net-mvc asp.net-mvc-3

我有一个网络流(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

3 个答案:

答案 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自动提交表单,但我认为这不是您想要做的。