2013-04-23 5 views
0

Я бы поверила, что этот вопрос имеет очевидный ответ, но я не могу найти его. У меня есть ASP.Net MasterPage, у которого есть страница контента, в которой есть несколько динамически созданных элементов управления вводами. Когда я отправляю форму, содержащую их, я хочу получить их значения. Это возможно только с использованием атрибута name элемента управления и вызова Request.Form [name].Извлечь данные формы из динамически созданных элементов управления вводами на странице содержимого

Поскольку элементы управления вводом являются частью ContentPlaceHolder, атрибуту имени присваивается уникальный идентификатор элемента управления, который представляет собой строку, которая может выглядеть так: «ctl00 $ skts_body_div $ MyNameId».

Вышеприведенное имя в примере не является произвольно сгенерированным именем, но оно зависит от структуры родительских элементов управления, поэтому в обратной почте не так просто создать имя «ctl00 $ skts_body_div $ MyNameId», поэтому что я могу вызвать Request.Form ["ctl00 $ skts_body_div $ MyNameId"].

Каков наилучший способ получения опубликованных данных?

Платформа .Net 4.0

Благодаря Джихад

ответ

0

я узнал, что я мог установить имя атрибута равным ид, используя JavaScript в браузере. Это можно сделать с помощью jquery, но если вы не используете jquery, тогда еще один вариант - перебрать элементы ввода и другие элементы, которые можно отправить обратно.

Я считаю, что единственным недостатком является то, что вы должны только изменить динамически созданные элементы управления, а не удалять любые элементы управления runat = "server" ASP, поскольку они используют атрибут name для назначения своих значений.

Следующий код является 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); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^