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

问题描述:

在ASP.NET MVC 3.5应用程序中。我有一个复选框,“食品/ BEV”,这是一个boolean类型的,我想知道如何管理这样的:如果该复选框被选中如果选中了一个复选框如何将下拉列表设置为C#中的必填字段

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

如果不选中该复选框:

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

谢谢你的帮忙!

+0

看着你的问题,我想知道你是否忘了检查页面在回发中的有效性。你应该在做任何服务器端之前检查是否(Page.IsValid)。 –

+0

@Greg - 只要做一个简单的if条件或使用条件运算符来检查复选框是否被选中'chkFoodOrBev.Checked'(返回true或false'&&',并且在下拉列表中选择了一个值myCaterer .SelectedIndex == - 1'如果这两个都是真实的,不允许提交表单(另外,抛出一个错误信息或者提醒说这样) – JonH

+0

我将这个条件添加到控制器,但它不起作用 ' if(request.FoodBeverage == true && request.Caterer == null) ModelState.AddModelError(“餐饮服务商”,“如果您服务Food&Bev,则需要提供餐饮服务商字段”);' 我在这里做了什么错? – Greg

添加必填字段校验器的下拉列表中,并设置启用=“假”在默认情况下。使用AutoPostBack =“true”将OnCheckChanged事件添加到CheckBox,并在事件处理程序中将验证程序的启用状态设置为CheckBox的已检查状态。

+0

因为它是一个asp.net mvc web应用程序,而不是一个web表单,所以我设置了一个下拉列表作为条件,如果复选框== true,那么它应该是必需的,例如

+0

我不确定这一点,但你可以这样做:{Model.Request.FoodBeverage.Checked == true}? –

+0

我将其更改为“已选中”,但它无论如何都不会将下拉列表变为必填字段。 在模型中我有这个验证,当用户点击一个“提交”按钮时有效: if(string.IsNullOrEmpty(Caterrer) &&(FoodBeverage == true)) yield return new RuleViolation(“Caterer”,“Please提供餐饮服务商信息“); 一旦用户选中某个复选框,下拉列表是否可能获得焦点或转为必填字段,因此应在“Submit”按钮被击中前填充。 或者至少有一位用户会弹出一个提醒来选择一个餐饮服务商。 – Greg

只是做一个简单的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函数来启用验证器。

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