栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何正确使用RegisterForEventValidation

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何正确使用RegisterForEventValidation

经过阅读有关脚本管理器和反复试验的大量研究之后,发现了以下内容。

您可以禁用事件验证,但这并不总是最好的选择,因为同时进行Javascript验证和ASP.NET验证是一种很好的做法。这就是在下拉菜单中注册这些值的全部目的。如果您有将选项注入选项的Javascript(来自ASP.NET
DropDownList控件的选择渲染),则希望尽可能防止脚本注入。

回答我的问题:为此,我们针对可能出现在应用程序中任何情况的下拉菜单中的每个可能值,调用RegisterForEventValidation。
就我而言,我有两个下拉菜单。一个下拉菜单用于引起回发,并使用基于第一个下拉菜单的值重新填充第二个下拉菜单。但是,现在我正在使用Javascript使用jQuery将值注入到下拉列表中。

在重新填充值之前,我使用jQuery删除了所有值。

jQuery("#<%=DDLTest.ClientID %>").children("option").each(function() {  jQuery(this).remove();});

当我的第一个下拉列表发生更改时,我用与第一个下拉列表值相关的值重新填充第二个下拉列表。

var map = {     "1112": "Hair 5 Drug Panel",     "1121": "Hair 5 Drug Panel and Extended Opiates Limit of Detection Test",     "1120": "Hair 5 Drug Panel Limit of Detection Test" };var thisTemp = this;  // the reason I do this is because "this" is already being used in the callback.jQuery.each(map, function(key, val) {  jQuery(thisTemp.Elements.DDLTest).append(jQuery("<option></option>").val(key).text(val));});

并选择我需要的值。

jQuery(this.Elements.DDLTest).val(quickDataEntryObject.TestPricingOptionId);

但是,在所有这些Javascript事情发生之前,我正在为下拉列表注册可能的值。 您必须在“渲染”事件中执行此操作。

Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)        Dim testPricingOptionTable As DataTable = ApplicationContext.Database.ExecuteDataSet("procEventValidationRegisteredValues", "test_pricing_options").Tables(0)        For Each testPricingOptionRow As DataRow In testPricingOptionTable.Rows Page.Clientscript.RegisterForEventValidation(DDLTest.UniqueID, testPricingOptionRow(0).ToString)        Next        Mybase.Render(writer)    End Sub


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/383503.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号