从填充了Ajax的asp:DropDownList获取C#代码的价值

时间:2013-02-28 08:56:19

标签: c# asp.net ajax html-select

我有2个DropDownLists,它们在呈现页面之前填充在c#代码中。当页面回发后,我可以成功获取更改的值。但是,一个条件是如果值在第一个DropDownList中更改,则重新填充第二个下拉列表。我正在使用Ajax调用这样做,一切都在视觉上运作良好。

问题是当条件出现时,第二个DropDownList通过Ajax代码填充时,列表项和选定的值在回发时不会显示在C#代码中。我已经读过,这不会发生。

DropDownList有一个ID="cboMutations"

我终于使用以下方法进行了此操作:

        Int32 id = 0;
        if (!string.IsNullOrEmpty(Request.Form["ctl00$MainContent$cboMutations"]))
        {
            Int32.TryParse(Request.Form["ctl00$MainContent$cboMutations"], out id);
        }

我的主要问题是:

使用ctl00$MainContent$cboMutations以这种方式引用属性是否安全?

它在开发中有效,但部署后会起作用吗?

1 个答案:

答案 0 :(得分:0)

Asp.net严格要求接受哪些数据。 asp下拉列表不允许您发送这样的数据。这可确保用户仅发送服务器提供的值。

在您的情况下,您正在使用html控件并传递asp.net的内置安全性。您应该针对恶意用户可能尝试使用输入ctl00$MainContent$cboMutations发送无效数据的情况进行编程。

由于您要将数据解析为int,因此恶意用户几乎无法做到。部署时你也应该安全。