C# 如果选中复选框,如何将下拉列表设置为C中的必填字段#

C# 如果选中复选框,如何将下拉列表设置为C中的必填字段#,c#,asp.net-mvc,checkbox,C#,Asp.net Mvc,Checkbox,在ASP.NET MVC 3.5应用程序中。我有一个复选框“Food/Bev”,它是布尔类型,我想知道如何管理它: 如果选中该复选框: 下拉列表Caterer成为必填字段 除非从列表中选择了餐饮服务商选项,否则无法提交请求 如果未选中该复选框: Caterer下拉列表不是必填字段 谢谢你的帮助 只要做一个简单的if条件 if this.checkbox.checked && this.mydropdown.selectedindex=-1 //code / alert

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

如果选中该复选框:

  • 下拉列表
    Caterer
    成为必填字段
  • 除非从列表中选择了
    餐饮服务商
    选项,否则无法提交请求
如果未选中该复选框:

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

谢谢你的帮助

只要做一个简单的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

只要做一个简单的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

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


这篇文章很旧,但它的信息仍然相关:

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


这篇文章很旧,但它的信息仍然相关:

为下拉列表添加所需的字段验证器,并默认设置Enabled=“false”。使用AutoPostBack=“true”将OnCheckChanged事件添加到复选框中,并在事件处理程序中将验证器的启用状态设置为复选框的选中状态。

为下拉列表添加必需的字段验证器,并默认设置enabled=“false”。使用AutoPostBack=“true”将OnCheckChanged事件添加到复选框中,并在事件处理程序中将验证器的启用状态设置为复选框的选中状态。

查看您的问题,我想知道您是否忘记在回发时检查页面的有效性。在服务器端执行任何操作之前,您应该检查if(Page.IsValid)。@Greg-只需执行一个简单的if条件或使用条件运算符检查复选框是否选中
chkFoodOrBev.checked
(返回true或false
&&
,并且您在下拉列表中选择了一个值
myCaterer。SelectedIndex==-1
如果这两个值都为true,则不允许提交表单(此外,还会抛出一条错误消息或警告)。我将此条件添加到控制器中,但如果(request.FoodBeverage==true&&request.Caterer==null)ModelState.AddModelError(“Caterer”,“如果提供食物和饮料,则需要Caterer字段”);“我做错了什么?@JonH我使用的“如果条件”有什么问题吗?当我提交表单时,它没有显示错误消息…@Greg-你能在其中设置一个断点并通过调试查看它吗?看看你的问题,我想知道你是否忘记在回发时检查页面的有效性。你应该检查在服务器端执行任何操作之前执行if(Page.IsValid)。@Greg-只需执行一个简单的if条件或使用条件运算符检查复选框是否选中
chkFoodOrBev.checked
(返回true或false
&&
,并且您在下拉列表中选择了一个值
myCaterer。SelectedIndex==-1
如果这两个值都为true,则不允许提交表单(此外,还会抛出一条错误消息或警告)。我将此条件添加到控制器中,但如果(request.FoodBeverage==true&&request.Caterer==null)ModelState.AddModelError(“Caterer”,“如果提供食物和饮料,则需要Caterer字段”);“我做错了什么?@JonH我使用的“如果条件”有什么问题吗?当我提交表单时,它没有显示错误消息…@Greg-你能在其中设置一个断点并通过调试查看它吗?因为它是一个asp.net mvc web应用程序,而不是一个web表单,我设置了一个下拉列表作为一个必要条件,条件是如果有一个复选框==true,那么它应该是必需的,就像但无论如何都不会发生一样。谢谢你的建议!我不确定这一点,但你能做到:{Model.Request.FoodBeverage.Checked==true}?我把它改为“Checked”,但它不会将下拉列表转换为必填字段。在该模型中,当用户点击“提交”按钮时,我会进行此验证:if(string.IsNullOrEmpty(餐饮服务商)和&(FoodBeverage==true))yield return new rulevision(“餐饮服务商”,“请提供餐饮服务商信息”);下拉列表是否可能在用户选中复选框后立即获得焦点或转到必填字段,因此应在“提交”之前填写按钮被点击。或者至少一个用户得到一个弹出提示来选择餐饮服务商。因为这是一个asp.net mvc web应用程序,而不是一个web表单,我设置了一个下拉列表作为必填项,条件是如果一个复选框==true,那么它应该是必需的,就像但无论如何都不会发生一样。谢谢你的任何建议!我不确定这一点,但你能帮我做一下吗o此:{Model.Request.FoodBeverage.Checked==true}?我将其更改为“Checked”,但它不会将下拉列表转换为必填字段。在模型中,当用户点击“提交”按钮时,我会进行此验证:if(string.IsNullOrEmpty(餐饮服务商)&&(FoodBeverage==true))屈服-返回新的规则违规(“餐饮服务商”,“请提供餐饮服务商信息”);是否有可能在用户选中复选框后,下拉列表获得焦点或转到必填字段,因此应在点击“提交”按钮之前填充该列表。或者至少用户会收到选择餐饮服务商的弹出提示。