C#学习教程:CheckforUnassignedVariablesinRequest.QueryString字符串部分中的键/值对。例如,如果我使用http://local/Default.aspx?test=value加载我的页面,那么我可以调用以下代码://http://local/Default.aspx?test=valueprotectedvoidPage_Load(对象发送者,EventArgse){stringvalue=Request.QueryString["test"];//=="value"}理想情况下,我想检查是否存在测试,因此我可以使用http://local/Default。aspx?test调用页面并得到一个布尔值,告诉我测试是否存在于查询字符串中。像这样://http://local/Default.aspx?testprotectedvoidPage_Load(objectsender,EventArgse){booltestExists=Request.QueryString.HasKey("test");//==True}理想情况下,我想要的是一个布尔值,告诉我测试变量是否存在于字符串中。我想我可以使用正则表达式来检查字符串,但我很好奇是否有人有更优雅的解决方案。我尝试了以下操作://http://local/Default.aspx?testRequest.QueryString.AllKeys.Contains("test");//==False(应该是true)Request.QueryString.Keys[0];//==null(应该是“test”)Request.QueryString.GetKey(0);//==null(应该是"test")这种行为与PHP不同,例如,我可以使用$testExists=isset($_REQUEST['test']);//==TrueRequest.QueryString.GetValues(null)将获取没有值的键列表Request.QueryString.GetValues(null).Contains("test")将返回true我写了一个扩展方法来解决这个任务:publicstaticboolContainsKey(thisNameValueCollectioncollection,stringkey){if(collection.AllKeys.Contains(key))returntrue;//ReSharper禁用一次AssignNullToNotNullAttributevarkeysWithoutValues=collection.GetValues(null);返回keysWithoutValues!=null&&keysWithoutValues.Contains(key);Request.QueryString是一个NameValueCollection,但只有当查询字符串采用通常的[name=value]*格式时,才会向其中添加项目。如果不是,则为空。如果您的QueryString的形式为?test=value,那么Request.QueryString.AllKeys.Contains("test")将执行您想要的操作。否则,您将对Request.Url.Query进行字符串操作。我用这个。if(Request.Params["test"]!=null){//IsSet}elseif(Request.QueryString.GetValues(null)!=null&&Array.IndexOf(Request.QueryString.GetValues(null),"test")>-1){//未设置}else{//不存在}Request.QueryString.ToString().Contains("test")这适用于您正在寻找单个查询字符串参数的特殊情况,例如MyFile.aspx?test等其他解决方案更适合更复杂的一般情况。以上就是C#学习教程:检查Request中是否有未赋值的变量。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
