2015-06-15 3 views
0

Я видел пару других вопросов, подобных этому, у меня, кажется, странный поворот. У меня есть веб-приложение с расписанием, сотрудник отправляет свое время в таблицу, его отправляют в H.R. как только для чтения. H.R. может затем одобрить или отклонить их расписание в зависимости от определенных критериев. Я подумал, что было бы неплохо, если бы H.R. Rep мог щелкнуть по ячейкам, которые были неправильными, и повернуть их красным, поэтому, когда он отклоняется и отправляется обратно сотруднику, было бы легко увидеть, что им нужно исправить.Значение ASP: Текстовое поле, установленное Javascript

Я написал этот небольшой отрывок в Javascript, который хорошо работает:

var validTextArray = {}; 
 
    var backgroundColorArray = {}; 
 
    function clearTextBox(textBoxID) 
 
    { 
 
     if (document.getElementById(textBoxID).value != "#ERROR") 
 
     { 
 
      backgroundColorArray[textBoxID] = document.getElementById(textBoxID).style.backgroundColor; 
 
      validTextArray[textBoxID] = document.getElementById(textBoxID).value; 
 
      document.getElementById(textBoxID).value = "#ERROR"; 
 
      document.getElementById(textBoxID).style.backgroundColor = "red"; 
 
     } 
 
     else if (validTextArray[textBoxID] != null) 
 
     { 
 
      document.getElementById(textBoxID).value = validTextArray[textBoxID]; 
 
      document.getElementById(textBoxID).style.backgroundColor = backgroundColorArray[textBoxID]; 
 
     } 
 
    }

и иметь четкое представление о моей C# вот что:

  day1PH.Attributes["onclick"] = "clearTextBox(this.id)"; 
 
      day1PN.Attributes["onclick"] = "clearTextBox(this.id)"; 
 
      day1LV.Attributes["onclick"] = "clearTextBox(this.id)"; 
 
      day1TL.Attributes["onclick"] = "clearTextBox(this.id)"; 
 

 
      day2PH.Attributes["onclick"] = "clearTextBox(this.id)"; 
 
      day2PN.Attributes["onclick"] = "clearTextBox(this.id)"; 
 
      day2LV.Attributes["onclick"] = "clearTextBox(this.id)"; 
 
//etc...

Эта часть работает красиво, проблема в том, что мне нужно уметь фиксировать эти ошибки. Теперь, когда H.R. обращается к кнопке отклонения, все данные в таблице переписываются в базу данных SQL, но поскольку текст был установлен javascript, значения «#ERROR» не проходят.

Что я могу сделать, чтобы захватить эти значения?

+0

Я думаю, что вы случайно расчистке текстовые поля, прежде чем они попадут в базу данных. Когда вы используете JavaScript для установки текста Asp: TextBox, текст появляется, когда вы выполняете обратную передачу. –

ответ

0

Я предполагаю, что вы используете веб-формы, если хотите, вы можете использовать скрытое поле и установить свойство value с ошибкой, а затем, отправляя форму на свой веб-сервер, вы можете получить это значение с помощью Request.Form [ "nameOfYourHiddenAttribute"].

<input id="hdnErrors" type="hidden" name="error" value="xpto"> 

string error = Request.Form["error"] + ""; //error is 'xpto' 

, если у вас есть несколько ошибок, вы можете использовать некоторый словарь в яваскрипте и в конце концов вы можете сериализации в JSON объект е поместить его в скрытом значении, а затем, в серверной стороне коде, вы можете десериализации и используй это.

Что-то вроде этого (не проверял)

var arrayObject = []; 
var error = {txtId = "txt1", description="HR error"}; 
arrayObject.push(error); 

document.getElementById('hdnErrors').value = JSON.stringify(arrayObject); 
+0

Это работает, можете ли вы объяснить, почему мне нужно использовать скрытое поле вместо того, чтобы говорить, называя мои существующие asp: текстовые поля и используя ваш метод Request.Form []? –

+0

В WebForms вся информация, которая отображается в браузере в serverControls, сохраняется в специальном скрытом поле, создаваемом платформой ViewState. Так как это означает, что веб-формы «имитируют» соединение в мире без http-состояния, вся информация идет только по-разному, сервер-клиент, что-то лишнее с клиентским кодом вступает в силу только в клиенте, потому что вы не применяете это в viewState (если вы это сделаете, сервер проверяет состояние представления и, если он отличается от оригинала, вы получите сообщение об ошибке «invalid viewState»). – Coastpear

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