首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从内容页中动态创建的输入控件中检索表单数据

从内容页中动态创建的输入控件中检索表单数据
EN

Stack Overflow用户
提问于 2013-04-24 02:37:51
回答 1查看 925关注 0票数 0

我会相信这个问题有一个显而易见的答案,但我似乎找不到任何答案。我有一个ASP.Net MasterPage,它有一个内容页面,其中有几个动态创建的输入控件。当我发布包含它们的表单时,我想检索它们的值。这只能通过使用控件的name属性并调用Request.Formname来实现。

因为输入控件是ContentPlaceHolder的一部分,所以它们的UniqueId属性被分配了控件的名称,它是一个字符串,例如:"ctl00$skts_body_div$MyNameId“。

示例中的上述名称不是随机生成的名称,但它依赖于控件父级的结构,因此在回发中生成名称"ctl00$skts_body_div$MyNameId“并不容易,因此我可以调用Request.Form"ctl00$skts_body_div$MyNameId”。

检索发布数据的最佳实践方法是什么?

平台为.Net 4.0

感谢圣战

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-29 16:38:51

我发现可以在浏览器中使用javascript将name属性设置为等于id。使用jquery可以很容易地做到这一点,但如果不使用jquery,那么另一个选择是遍历输入元素和其他可能回发的元素。

我认为唯一的缺点是您必须确保只更改动态创建的控件,而不是命中任何runat=“服务器”控件,因为这些控件使用name属性来赋值。

下面的代码是我使用的javascript:

代码语言:javascript
复制
function SetControlNamesToId() {
    var inputObjects = document.getElementsByTagName('input');
    for (i = 0; i < inputObjects.length; i++) {
        if (inputObjects[i].type == 'checkbox' ||
            inputObjects[i].type == 'radio' ||
            inputObjects[i].type == 'text' || 
            inputObjects[i].type == 'hidden') {
            SetNameToId(inputObjects[i]);
        }
    }

    var selectObjects = document.getElementsByTagName('select');
    for (i = 0; i < selectObjects.length; i++) {
        SetNameToId(selectObjects[i]);
    }

    var textAreaObjects = document.getElementsByTagName('textarea');
    for (i = 0; i < textAreaObjects.length; i++) {
        SetNameToId(textAreaObjects[i]);
    }
}

function SetNameToId(control)
{
    if (control.id && control.id != "") {
        control.setAttribute("name", control.id);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16176745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档