【问题标题】:If a checkbox is checked how to set a dropdown as a required field in C#如果选中一个复选框,如何在 C# 中将下拉菜单设置为必填字段
【发布时间】:2011-08-09 02:10:54
【问题描述】:

在 ASP.NET MVC 3.5 应用程序中。我有一个复选框“Food/Bev”,它是一个布尔类型,我想知道如何管理它:

如果复选框被选中:

  • 下拉列表Caterer 成为必填字段。
  • 除非从列表中选择了Caterer 选项,否则无法提交请求。

如果复选框未选中:

  • Caterer 下拉列表不是必填字段。

感谢您的帮助!

【问题讨论】:

  • 看看你的问题,我想知道你是否没有忘记在回发时检查页面的有效性。在执行任何服务器端操作之前,您应该检查 if(Page.IsValid)。
  • @Greg - 只需做一个简单的 if 条件或使用条件运算符来检查复选框是否已选中 chkFoodOrBev.Checked(返回 true 或 false && 并且您在下拉myCaterer.SelectedIndex==-1 如果这两个都为真,则不允许提交表单(此外,抛出错误消息或警告这样说)。
  • 我将此条件添加到控制器,但它不起作用'if (request.FoodBeverage == true && request.Caterer == null) ModelState.AddModelError("Caterer", "Caterer field is required如果您提供食品和饮料");'我在这里做错了什么?
  • @JonH 我使用的“如果条件”有问题吗?当我提交表单时,它不会显示错误消息...
  • @Greg - 你能在里面放一个断点并通过调试查看它吗?

标签: c# asp.net-mvc checkbox


【解决方案1】:

只做一个简单的 if 条件

if this.checkbox.checked && this.mydropdown.selectedindex=-1
  //code / alert that warns the user you must make a selection

您或许可以使用?: 运算符:

bool b = ((myCheck.Checked && myDropDown.SelectedIndex==-1) ? true : false);

if(b) {
 //stop submit of form as no selection was made
}

或者保持代码简短:

 bool b = this.CheckBox1.Checked && this.DropDownList1.SelectedIndex == -1;
 //when the checkbox is not check Response.Write(b); prints false
//when the checkbox IS checked and no item is selected, Response.Write(b); prints true

【讨论】:

    【解决方案2】:

    为 DropDown 添加必填字段验证器,并默认设置为 Enabled="false"。使用 AutoPostBack="true" 将 OnCheckChanged 事件添加到 CheckBox,并在事件处理程序中将验证器的启用状态设置为 CheckBox 的选中状态。

    【讨论】:

    • 因为它是一个 asp.net mvc web 应用程序,而不是一个 web 表单,所以我设置了一个下拉列表作为必需的条件,如果复选框 == true,那么它应该是必需的,例如 但无论如何什么都没有发生。感谢您的任何建议!
    • 我不确定这一点,但你能这样做吗:{Model.Request.FoodBeverage.Checked == true}?
    • 我将其更改为“已检查”,但无论如何它都不会将下拉列表变为必填字段。在模型中,当用户点击“提交”按钮时,我有此验证: if (string.IsNullOrEmpty(Caterer) && (FoodBeverage == true)) yield return new RuleViolation("Caterer", " Please provide a Caterer info ");一旦用户选中复选框,下拉列表是否有可能获得焦点或转到必填字段,因此应该在“提交”按钮被点击之前填写它。或者至少用户会收到选择餐饮服务商的弹出式提醒。
    【解决方案3】:

    为下拉列表创建一个RequiredFieldValidator,但将其设置为Enabled=false。然后,当复选框被选中时,调用ValidatorEnable 函数来启用验证器。

    这篇文章很旧,但它的信息仍然相关:http://msdn.microsoft.com/en-us/library/aa479045.aspx#aspplusvalid_clientside

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 2022-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多