在无法获得控件实例的情况下获取控件值的方法

本文介绍了一个用于从 ASP.NET 请求中获取控件值的方法 GetControlValueFromRequest,并详细展示了如何处理不同情况来确保能够正确地获取到所需控件的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1None.gif        public static string GetControlValueFromRequest(string controlId)
 2ExpandedBlockStart.gifContractedBlock.gif        dot.gif{
 3InBlock.gif            if (controlId == null)
 4InBlock.gif                throw new ArgumentNullException("controlId");
 5InBlock.gif            string requestValue = null;
 6InBlock.gif            HttpRequest req = HttpContext.Current.Request;
 7InBlock.gif            string eventTarget = req.Form["__EVENTTARGET"?? string.Empty;
 8InBlock.gif            if (eventTarget.Equals(controlId, StringComparison.InvariantCultureIgnoreCase))
 9ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
10InBlock.gif                requestValue = req.Form["__EVENTARGUMENT"];
11ExpandedSubBlockEnd.gif            }

12InBlock.gif            if (string.IsNullOrEmpty(requestValue))
13ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
14InBlock.gif                foreach (string id in req.Form.AllKeys)
15ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
16InBlock.gif                    if (controlId.Equals(GetFriendlyControlId(id), StringComparison.InvariantCultureIgnoreCase))
17ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
18InBlock.gif                        requestValue = req[id];
19InBlock.gif                        break;
20ExpandedSubBlockEnd.gif                    }

21ExpandedSubBlockEnd.gif                }

22ExpandedSubBlockEnd.gif            }

23InBlock.gif            return requestValue;
24ExpandedBlockEnd.gif        }

25None.gif
26None.gif        public static string GetFriendlyControlId(string renderedControlId)
27ExpandedBlockStart.gifContractedBlock.gif        dot.gif{
28InBlock.gif            int indexOfSeparator = renderedControlId.LastIndexOf(GetPageIdSeparator());
29InBlock.gif            if (indexOfSeparator >= 0)
30ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
31InBlock.gif                renderedControlId = renderedControlId.Substring(indexOfSeparator + 1);
32ExpandedSubBlockEnd.gif            }

33InBlock.gif            return renderedControlId;
34ExpandedBlockEnd.gif        }

35None.gif
36None.gif        private static string GetPageIdSeparator()
37ExpandedBlockStart.gifContractedBlock.gif        dot.gif{
38InBlock.gif            Page page = HttpContext.Current.CurrentHandler as Page;
39InBlock.gif            return page == null ? "$" : page.IdSeparator.ToString();
40ExpandedBlockEnd.gif        }

41None.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值