如果选中了一个复选框如何将下拉列表设置为C#中的必填字段
在ASP.NET MVC 3.5应用程序中。我有一个复选框,“食品/ BEV”,这是一个boolean类型的,我想知道如何管理这样的:如果该复选框被选中如果选中了一个复选框如何将下拉列表设置为C#中的必填字段
:
- 一个下拉列表
Caterer
成为必填字段。 - 除非从列表中选择
Caterer
选项,否则无法提交请求。
如果不选中该复选框:
- 的
Caterer
下拉列表不是必填字段。
谢谢你的帮忙!
添加必填字段校验器的下拉列表中,并设置启用=“假”在默认情况下。使用AutoPostBack =“true”将OnCheckChanged事件添加到CheckBox,并在事件处理程序中将验证程序的启用状态设置为CheckBox的已检查状态。
因为它是一个asp.net mvc web应用程序,而不是一个web表单,所以我设置了一个下拉列表作为条件,如果复选框== true,那么它应该是必需的,例如
我不确定这一点,但你可以这样做:{Model.Request.FoodBeverage.Checked == true}? –
我将其更改为“已选中”,但它无论如何都不会将下拉列表变为必填字段。 在模型中我有这个验证,当用户点击一个“提交”按钮时有效: 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
看着你的问题,我想知道你是否忘了检查页面在回发中的有效性。你应该在做任何服务器端之前检查是否(Page.IsValid)。 –
@Greg - 只要做一个简单的if条件或使用条件运算符来检查复选框是否被选中'chkFoodOrBev.Checked'(返回true或false'&&',并且在下拉列表中选择了一个值myCaterer .SelectedIndex == - 1'如果这两个都是真实的,不允许提交表单(另外,抛出一个错误信息或者提醒说这样) – JonH
我将这个条件添加到控制器,但它不起作用 ' if(request.FoodBeverage == true && request.Caterer == null) ModelState.AddModelError(“餐饮服务商”,“如果您服务Food&Bev,则需要提供餐饮服务商字段”);' 我在这里做了什么错? – Greg